Lodash 方法庫 原生實現 待完結。。。

 1 'use strict'
 2 let _ = {
 3 
 4   // 將數組(array)拆分紅多個 size 長度的區塊,並將這些區塊組成一個新數組。 若是array 沒法被分割成所有等長的區塊,那麼最後剩餘的元素將組成一個區塊。
 5   chunk(arr, nub) {
 6       var res = [];
 7       for (var i = 0; i < arr.length; i += nub) {
 8         res.push(arr.slice(i, i + nub))
 9       };
10       return res;
11   },
12 
13   // 建立一個新數組,包含原數組中全部的非假值元素。例如false, null, 0, "", undefined, 和 NaN 都是被認爲是「假值」。
14   compact (arr) {
15       let res = [];
16       arr.forEach( item => {
17           typeof item === 'number' && res.push(item)
18       } );
19       return res
20   },
21 
22   // 建立一個新數組,將array與任何數組 或 值鏈接在一塊兒。
23   concat(...arr) {
24     let res = [];
25     arr.forEach( item => {
26       item instanceof Array ? item.forEach(i => res.push(i)) : res.push(item)
27     } );
28     return res
29   },
30 
31   // 建立一個具備惟一array值的數組,每一個值不包含在其餘給定的數組中。(愚人碼頭注:即建立一個新數組,這個數組中的值,爲第一個數字(array 參數)排除了給定數組中的值。)該方法使用 SameValueZero作相等比較。結果值的順序是由第一個數組中的順序肯定。 
32   // 注意: 不像 _.pullAll,這個方法會返回一個新數組。
33   difference(arr, filtersArr) {
34     arr.forEach( (item, index) => {
35       if(filtersArr.includes(item)) {
36         arr.splice(index, 1)
37       }
38     } );
39     return arr
40   },
41 
42   // 這個方法相似_.difference ,除了它接受一個 iteratee (愚人碼頭注:迭代器), 調用array 和 values 中的每一個元素以產生比較的標準。 結果值是從第一數組中選擇。iteratee 會調用一個參數:(value)。(愚人碼頭注:首先使用迭代器分別迭代array 和 values中的每一個元素,返回的值做爲比較值)。 
43   // 注意: 不像 _.pullAllBy,這個方法會返回一個新數組。
44 };
45 
46 console.log( _.chunk([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], 3) );
47 console.log( _.compact([0, 1, false, 2, '', 3, null, '1']) );
48 console.log( _.concat([1], 2, 3, 4, [5], [[6]]) );
49 console.log( _.difference([1, 2, 3], [2, 4]) );
相關文章
相關標籤/搜索