根據underscore精簡的函式(陣列篇)

2021-08-01 06:25:07 字數 3336 閱讀 7260

這裡將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...