underscore為Array提供了許多工具類方法晨仑,可以更方便快捷地操作Array静檬。
first / last
'use strict';
var arr = [2, 4, 6, 8];
_.first(arr); // 2
_.last(arr); // 8
flatten
flatten()接收一個(gè)Array,無(wú)論這個(gè)Array里面嵌套了多少個(gè)Array,flatten()最后都把它們變成一個(gè)一維數(shù)組
'use strict';
alert(JSON.stringify(_.flatten([1,[2],[3,[[4],[5]]]])));
// [1, 2, 3, 4, 5]
zip / unzip
zip()把兩個(gè)或多個(gè)數(shù)組的所有元素按索引對(duì)齊主之,然后按索引合并成新數(shù)組。
unzip()則是反過(guò)來(lái):
'use strict';
var names = ['Adam', 'Lisa', 'Bart'];
var scores = [85, 92, 59];
_.zip(names, scores);
// [['Adam', 85], ['Lisa', 92], ['Bart', 59]]
'use strict';
var namesAndScores = [['Adam', 85], ['Lisa', 92], ['Bart', 59]];
_.unzip(namesAndScores);
// [['Adam', 'Lisa', 'Bart'], [85, 92, 59]]
object
'use strict';
var names = ['Adam', 'Lisa', 'Bart'];
var scores = [85, 92, 59];\
alert(JSON.stringify(_.object(names, scores)));
// {Adam: 85, Lisa: 92, Bart: 59}
_.object()是一個(gè)函數(shù)李根,不是JavaScript的Object對(duì)象
range
'use strict';
// 從0開始小于10:
_.range(10); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
// 從1開始小于11:
_.range(1, 11); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
// 從0開始小于30槽奕,步長(zhǎng)5:
_.range(0, 30, 5); // [0, 5, 10, 15, 20, 25]
// 從0開始大于-10,步長(zhǎng)-1:
_.range(0, -10, -1); // [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]