這裡將underscore.js內的函式進行精簡,指在幫助理解或者快速回憶起underscore.js的原理,更深入的了解函式式程式設計。本文基於underscore.js1.8.3版本,參考手冊為
這裡將精簡underscore中提供的針對陣列的操作,部分api已經在《根據underscore精簡的函式(集合篇)》中體現,不再贅述。
var initial = function
(array, n) ;
var a =initial([5, 4, 3, 2, 1],2);
console.log(a);
執行結果
[ 5, 4, 3 ]
var rest=function
(arr,n);
var a =rest([5, 4, 3, 2, 1],2);
console.log(a);
執行結果
[ 3, 2, 1 ]
var first=function
(arr,n);
var a =first([5, 4, 3, 2, 1],2);
console.log(a);
執行結果
[ 5, 4 ]
var isarray=function
(obj);
var flatte=function
(input,shallow,strict,startindex)
}return output;
};var flatten = function
(array, shallow) ;
var a =flatten([1, [2], [3, [[4]]]]);
var b =flatten([1, [2], [3, [[4]]]],true);
console.log(a);
console.log(b);
執行結果
[ 1, 2, 3, 4 ]
[ 1, 2, 3, [ [ 4 ] ] ]
var uniq=function
(arr,issorted)else
if(result.indexof(value)==-1)
}return result;
};var a=uniq([1,1,1,1,2,2,2,3,3]);
console.log(a);
執行結果
[ 1, 2, 3 ]
var intersection=function
(array)
if(j===argslength) result.push(item);
}return result;
};var a=intersection([1, 2, 3], [101, 2, 1, 10], [2, 1]);
console.log(a);
執行結果
[ 1, 2 ]
var difference = function
(array) );
};var a=difference([1, 2, 3, 4, 5], [5, 2, 10]);
console.log(a);
執行結果
[ 1, 3, 4 ]
var unzip=function
(array);
var names = ['moe', 'larry', 'curly'];
var ages = [18, 23, 30];
var ***es = ['male', 'female', 'male'];
var students = unzip([names, ages, ***es]);
console.log(students);
執行結果
[ [ 'moe', 18, 'male' ],
[ 'larry', 23, 'female' ],
[ 'curly', 30, 'male' ] ]
var compact=function
(array);
var a=compact([0, 1, false, 2, '', 3]);
console.log(a);
執行結果
[ 1, 2, 3 ]
var object=function
(list,values);
for (var i=0,length=list.length;iif(values)else
}return result;
};var a=object(['moe', 'larry', 'curly'], [30, 40, 50]);
var b=object([['moe', 30], ['larry', 40], ['curly', 50]]);
console.log(a);
console.log(b);
執行結果
var range=function
(start,stop,step)
if(!step)
var length=math.max(math.ceil((stop-start)/step),0);
var range=array(length);
for(var idx=0;idxreturn range;
};var a=range(0,30,5);
console.log(a);
執行結果
[ 0, 5, 10, 15, 20, 25 ]
var chunk=function
(arr,count)
return result;
};var a=chunk([1,2,3,4,5,6,7], 2);
console.log(a);
執行結果
[ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ], [ 7 ] ]
underscore 常用的方法
參考文件 collection map 類似array.map 但是返回的是物件 filter 返回陣列,對於nodelist 返回的是document 節點 every 返回boolean 迭代的列表每個都是true才會返回 true some 返回boolean 迭代的列表有乙個為true 就返...
underscore的簡單了解
1.underscore 乙個封裝好的js工具庫,它提供了一整套函式式程式設計的使用功能,但是沒有擴充套件任何js內建物件。它解決了這個問題 如果我面對乙個空白的html,並希望立即開始工作,我需要什麼?2.zip var require underscore 演示 var names 張三 李四 ...
underscore的bind和bindAll方法
bind方法和bindall方法都是用來設定函式的this值的,區別是呼叫方式不同。var xiaoming bind var func bind xiaoming,xiaoming.say func i am xiaoming bindall bindall xiaoming,say var fu...