一、返回數組中的最大值;(math.max)
首先,明確用法。math.max(1,2,4,-5,3 ) 比較傳入參數的值,參數個數任意;
實現 : 用apply(object,[]);
var num =[1,2,3,4,5];
var b=Math.max.apply(Math,num);
二、轉化一個數字數組爲function數組(每一個function都彈出相應的數字)
function toFunction (num){
var mynum= new Array();
for(var i=0,len=num.length;i<len;i++)
{
var myfunction=(function(n){
return function(){
alert(n);
}
})(num[i]);
//自執行函數,經過循環將num中的每一個值作爲參數傳給函數,每次都返回一個alert該參數的函數。由於使用了閉包(自由變量,不是在自己做用域定義的變量),經過n存儲每一個num【i】的值,以實現函數功能;
mynum.push(myfunction);
}
return mynum;
}
var num=[1,2,3,4,5];
var newnum=toFunction(num);
newnum[4]();
// 三、給object數組進行排序(排序條件是每一個元素對象的屬性個數) num[{a:1,b:2},{},{a:3}]
num.sort() arrayobj.sort(sortfunction)
參數
arrayObj
必選項。任意 Array 對象。
sortFunction
可選項。是用來肯定元素順序的函數的名稱。若是這個參數被省略,
那麼元素將按照 ASCII 字符順序進行升序排列。
說明
sort 方法將 Array 對象進行適當的排序;
在執行過程當中並不會建立新的 Array 對象。
若是爲 sortfunction 參數提供了一個函數,那麼該函數必須返回下列值之一:
負值,若是所傳遞的第一個參數比第二個參數小。
零,若是兩個參數相等。
正值,若是第一個參數比第二個參數大。
//for(var i in object|[]) 在對象上迭代時是無序的,i就至關於其中某一個屬性的引用;數組上按元素順序 function sortfun(obj1,obj2){ var fn=function (obj){ var size=0;//size必須定義在函數內部,若定義在函數外部,則每次調用該函數時,所獲得的return的size都是相等的,並不能達到判斷個數並交換的效果; for(var i in obj) { if(obj.hasOwnProperty(i)) size++; } return size; } return fn(obj1)-fn(obj2); } var objnum=[ {a:1,b:3,c:4}, {a:1,b:3,c:4,d:5,f:6}, {a:1,b:3,c:4,d:5} ] objnum.sort(sortfun); // 利用JavaScript打印出Fibonacci數(不使用全局變量) function fibNum(num){ var fibArr=new Array(); if(num<2){ for(var i=0;i<num;i++) { fibArr.push(i) } } else{ fibArr.push(0,1); for(var i=2;i<num;i++) { var fibn=fibArr[i-1]+fibArr[i-2]; fibArr.push(fibn); } } return fibArr; } // 實現以下語法的功能:var a = (5).plus(3).minus(6); Number.prototype.plus = function(i){ //爲其原型添加方法plus 和 minus return this + i; } Number.prototype.minus = function(i){ return this - i; } var a = (5).plus(3).minus(6); console.log(a); // 實現以下語法的功能:var a = add(2)(3)(4); function add(n1){ return function(n2){ n2=n2+n1; return function(n3) { return n3+n2; } } }// 題目理解不夠全面,並不僅是單純的3次參數傳入,而是多個的狀況下都能調試成功 //實現分析 :遞歸調用 function(){ a+b} function myadd(l){ var myl=l; var inadd= function (m){ myl += m; return inadd; }// 當最後一個參數傳入後,執行完畢獲得須要的值myl,可是函數返回的是inadd這個 inadd.toString=inadd.valueOf =function(){ //當返回的是函數或者對象時,瀏覽器會進行toString or valueOf 的轉換,咱們將該內部函數這兩個自動轉換機制的function進行重寫,使其返回最後相加的值; return myl; } return inadd; } var a = add(2)(3)(4); console.log(a);