繼Underscore.js詳解第一篇: Collections後,這是第二篇,Underscore的Array method各個用法如下:
_.first(array, [n])
Alias: head, take
說明:回傳陣列元素值,n為指定回傳幾個
ex.
_.first([5, 4, 3, 2, 1]); => 5 _.first([5, 4, 3, 2, 1],3); => [5,4,3]
_.initial(array, [n])
說明:類似_.first,只不過從Array的最後一個數回,n為拋棄最後幾個
ex.
_.initial([5, 4, 3, 2, 1]);#未指定n,預設為1 => [5,4,3,2] _.initial([5, 4, 3, 2, 1],3); => [5,4]
_.last(array, [n])
說明:類似_.first,只不過從Array的最後元素返回,n為保留最後幾個
ex.
_.last([5, 4, 3, 2, 1]);#未指定n,預設為1 => 1 _.last([5, 4, 3, 2, 1],3); => [3,2,1]
_.rest(array, index)
說明:從第index個起,保留後面的全部元素
ex.
_.rest([5, 4, 3, 2, 1]);#未指定index,預設為1 => [4, 3, 2, 1] _.rest([5, 4, 3, 2, 1],3); => [2,1]
_.compact(array)
說明:Array裡若有0,false,"",NaN,undefined,null,就將之移除
ex.
_.compact([0, 1, false, 2, '', 3]); => [1, 2, 3]
_.flatten(array,[shallow])
說明:將一個多個巢狀的多維陣列的所有元素值平坦化為一維陣列,若shallow為true,則只向下平坦化一層
ex.
_.flatten([1, [2], [3, [[4]]]]); => [1, 2, 3, 4]; _.flatten([1, [2,['a',['d','c']]], [3, [[4]]]],true); => [1, 2, Array[2],3,Array[1]];
_.without(array,[*values])
說明:將指定的value值從Array中移除,values可以指定多個
ex.
_.without([1, 2, 1, 0, 3, 1, 4], 0, 1,2); => [3, 4]
_.union(*arrays)
說明:將多個array集合成一個array,只取不重複元素值
ex.
_.union([1, 2, 3], [101, 2, 1, 10], [2, 1]); => [1, 2, 3, 101, 10]
_.intersection(*arrays)
說明:將多個array集合成一個array,只取每個array都有的元素值
ex.
_.intersection([1, 2, 3], [101, 2, 1, 10], [2, 1]); => [1, 2]
_.difference(array,[*values])
說明:類似without,但定義上有點不同,without的定義是將values值從array中剔除,diffrence則是只要values裡面沒有的元素統統回傳
ex.
_.difference([1, 2, 3, 4, 5], [5, 2, 10]); => [1, 3, 4]
_.uniq(array,[isSorted],[iterator]) Alias:unique
說明:把一個array做uniq,若已預先知道array已排序過,則isSorted可以給它true,這樣可以更快一些,若有需要還可以增加callback function
註:若array無排序過但isSorted傳給它true,將會傳回不是你要的結果
_.uniq([1, 2, 1, 3, 1, 4]); => [1, 2, 3, 4]
_.zip(*array)
說明:把每個array的相同index值集合在同一個array,主要用在如果你有相同的index值需要做集合的時候特別有用
_.zip(['moe','larry','curly'], [30, 40, 50], [true, false, false]); => [["moe", 30, true], ["larry", 40, false], ["curly", 50, false]]
_.object(list,[values])
說明:把array轉換成array,list:values對應key:values
_.object(['moe', 'larry', 'curly'], [30, 40, 50]); => {moe: 30, larry: 40, curly: 50}
_.indexOf(array,value,[isSorted])
說明:傳回value在array裡的index值,若你知道該array已經排序過isSorted可以給它true,這樣可以執行比較快一點
_.indexOf([1, 2, 3], 2); => 1
_.lastIndexOf(array,value,[fromIndex])
說明:傳回最後一個value在array裡的index值,fromIndex則可以指定從第幾個index值開始
_.lastIndexOf([1, 2, 3, 1, 2, 3], 2); => 4
_.sorteIndex(list,array,[iterator],[context])
說明:傳回你要插入的值應該從array的第幾個index開始,iterator可以指定你要以什麼排序
var stooges = [{name :'moe',age: 40}, {name :'curly',age : 60}]; _.sortedIndex(stooges, {name : 'larry', age : 50}, 'age');#以age排序 => 1 _.sortedIndex([10, 20, 30, 40, 50], 35); => 3
_.range([start],stop,[step])
說明:range可以用來製造array,start為第0個值,stop為最終值 ,step為元素隔間值
_.range(10); => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] _.range(1, 11); => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] _.range(0, 30, 5); => [0, 5, 10, 15, 20, 25] _.range(0, -10, -1); => [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] _.range(0); => []
以上為underscore.js的arrays全部用法,underscore.js真的是很好用的plugin,可以 讓你的javascript code更簡潔,用更少的code完成更多的事,以上詳解供大家參考。