lodash
和underscore
是如今很是流行的兩個javascript
庫,提供了一套函數式編程的實用功能。lodash
是一套工具庫,內部封裝了不少字符串、數組、對象等常見數據類型的處理函數。javascript
下面介紹一下經常使用的函數java
定義編程
將數組(array)拆分紅多個 size 長度的區塊,並將這些區塊組成一個新數組。 若是array 沒法被分割成所有等長的區塊,那麼最後剩餘的元素將組成一個區塊。數組
參數ide
array (Array): 須要處理的數組
[size=1] (number): 每一個數組區塊的長度函數式編程
返回函數
(Array): 返回一個包含拆分區塊的新數組(至關於一個二維數組)。工具
示例code
_.chunk(['a', 'b', 'c', 'd'], 2); // => [['a', 'b'], ['c', 'd']] _.chunk(['a', 'b', 'c', 'd'], 3); // => [['a', 'b', 'c'], ['d']]
定義對象
建立一個新數組,包含原數組中全部的非假值元素。例如false, null, 0, "", undefined, 和 NaN 都是被認爲是「假值」。
參數
array (Array): 待處理的數組
返回
(Array): 返回過濾掉假值的新數組
示例
_.compact([0, 1, false, 2, '', 3]); // => [1, 2, 3]
定義
建立一個切片數組,去除array前面的n個元素。(n默認值爲1。)
參數
array (Array): 要查詢的數組。
[n=1] (number): 要去除的元素個數。
返回
(Array): 返回array剩餘切片。
示例
_.drop([1, 2, 3]); // => [2, 3] _.drop([1, 2, 3], 2); // => [3] _.drop([1, 2, 3], 5); // => [] _.drop([1, 2, 3], 0); // => [1, 2, 3]
定義
返回首次 value 在數組array中被找到的 索引值, 若是 fromIndex 爲負值,將從數組array尾端索引進行匹配。
參數
array (Array): 須要查找的數組。
value (*): 須要查找的值。
[fromIndex=0] (number): 開始查詢的位置。
返回
(number): 返回 值value在數組中的索引位置, 沒有找到爲返回-1。
示例
_.indexOf([1, 2, 1, 2], 2); // => 1 // Search from the `fromIndex`. _.indexOf([1, 2, 1, 2], 2, 2); // => 3
定義
建立一個去重後的array數組副本。只有第一次出現的元素纔會被保留。
參數
array (Array): 要檢查的數組。
返回
(Array): 返回新的去重後的數組。
示例
_.uniq([2, 1, 2]); // => [2, 1]
定義
遍歷 collection(集合)元素,返回 predicate(斷言函數)返回真值 的全部元素的數組。 predicate(斷言函數)調用三個參數:(value, index|key, collection)。
參數
collection (Array|Object): 一個用來迭代的集合。
[predicate=_.identity] (Array|Function|Object|string): 每次迭代調用的函數。
返回
(Array): 返回一個新的過濾後的數組。
示例
var users = [ { 'user': 'barney', 'age': 36, 'active': true }, { 'user': 'fred', 'age': 40, 'active': false } ]; _.filter(users, function(o) { return !o.active; }); // => objects for ['fred'] // The `_.matches` iteratee shorthand. _.filter(users, { 'age': 36, 'active': true }); // => objects for ['barney'] // The `_.matchesProperty` iteratee shorthand. _.filter(users, ['active', false]); // => objects for ['fred'] // The `_.property` iteratee shorthand. _.filter(users, 'active');
定義
_.filter的反向方法;此方法 返回 predicate(斷言函數) 不 返回 true(真值)的collection(集合)元素(非真)。
參數
collection (Array|Object): 用來迭代的集合。
[predicate=_.identity] (Array|Function|Object|string): 每次迭代調用的函數。
返回
(Array): 返回過濾後的新數組
示例
var users = [ { 'user': 'barney', 'age': 36, 'active': false }, { 'user': 'fred', 'age': 40, 'active': true } ]; _.reject(users, function(o) { return !o.active; }); // => objects for ['fred'] // `_.matches` 迭代簡寫 _.reject(users, { 'age': 40, 'active': true }); // => objects for ['barney'] // `_.matchesProperty` 迭代簡寫 _.reject(users, ['active', false]); // => objects for ['fred'] // `_.property` 迭代簡寫 _.reject(users, 'active'); // => objects for ['barney']