Math.max得到數組中最大值


Math.max(param1,param2) 因為參數不支持數組。 
所以可以根據apply的特點來解決, 
var max = Math.max.apply(null,array),這樣就可以輕易的得到一個數組中最大的一項

注:在調用apply的時候第一個參數給了一個null,這個是因為沒有對象去調用這個方法,我們只需要用這個方法幫我們運算,得到返回的結果就行,所以就直接傳遞了一個null過去。

拓展:

1.call()與apply()

區分apply,call就一句話: 
foo.call(this, arg1,arg2,arg3) == foo.apply(this, arguments)==this.foo(arg1, arg2, arg3) 
call, apply都屬於Function.prototype的一個方法,它是JavaScript引擎內在實現的,因為屬於Function.prototype,所以每個Function對象實例,也就是每個方法都有call, apply屬性.既然作為方法的屬性,那它們的使用就當然是針對方法的了.

這兩個方法是容易混淆的,因為它們的作用一樣,只是使用方式不同.

 

a.functionname.apply(b,arr);
a.functionname.call(b,arg1,arg2……);

 

call, apply方法區別是,從第二個參數起, call方法參數將依次傳遞給借用的方法作參數, 而apply直接將這些參數放到一個數組中再傳遞, 最后借用方法的參數列表是一樣的.

        /*
         * apply方法: 
         * 語法:apply(thisObj,[argArray])
         * 定義:應用某一對象的一個方法,用另一個對象替換當前對象。
         */
            //定義一個人類
            function Person(name,age){
                this.name = name;
                this.age = age;
            }

            //定義一個學生類
            function Student(name,age,grade){
                Person.apply(this,arguments);
                //或者
                Person.call(this,name,age)
                this.grade = grade;
            }

            var student = new Student("dqf","20","一年級");
            console.info("name:"+student.name+"\n"+"age:"+student.age+"\n"+"grade:"+student.grade);

 

es6中Math對象的拓展:

1、Math.trunc()

該方法用於取出一個小數的小數部分,返回整數部分。

Math.trunc(1.234);  //1
Math.trunc(-2.34141);  //-2
Math.trunc(3.9);  //3
//對於非數值,Math.trunc會內部使用Number將其轉為數值
Math.trunc("12.87656");  //12
//對於空值和無法截取整數的值,返回NaN
Math.trunc("a");  //NaN
Math.trunc();  //NaN
Math.trunc(NaN);  //NaN

2、Math.sign()

該方法用來判斷一個數到底是正數,負數,還是0。有五中返回值。

Math.sign(23.235);  //1
Math.sign(25);  //1
Math.sign(0);  //0
Math.sign(0.0);  //0
Math.sign(-0.0);  //-0
Math.sign(-0);  //-0
Math.sign(-2);  //-1
Math.sign(-2.983958);  //-1
Math.sign('a');  //NaN
Math.sign();  //NaN
Math.sign(NaN);  //NaN

參數為正數時,返回1;

參數為0時,返回0;

參數為-0時,返回-0;

參數為負數時,返回-1;

參數為其他值時,返回NaN。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM