lodash

寫koa時(shí)候突然發(fā)現(xiàn)lodash這個(gè)庫,因?yàn)榘l(fā)現(xiàn)對(duì)array object的遍歷操作不在原數(shù)據(jù)進(jìn)行,發(fā)現(xiàn)真的很有用。

 import _ from 'lodash'

一些lodash常用函數(shù):
1.chunk,將數(shù)組進(jìn)行切分。

const arr = [1,2,3,4,5,6,7,8,9];
_.chunk(arr,2);
// =>[[1,2],[3,4],[5,6],[7,8],[9]]

這個(gè)函數(shù)把數(shù)組按照一定的長度分開,返回新的數(shù)組。(片段化數(shù)組)
2.compact,去除假值。(將所有的空值,0,NaN過濾掉)

_.compact(['1','2',' ',0])
// => ['1','2']

3.uniq,數(shù)組去重。(將數(shù)組中的對(duì)象去重,只能是數(shù)組去重,不能是對(duì)象去重。)

_.uniq([1,1,3])
// => [1,3]

這跟介紹的第二個(gè)函數(shù)compact有很好的配合作用。(后端接口傳來的數(shù)據(jù)很多是有重復(fù)或者空值的,這時(shí)候就可以使用兩個(gè)函數(shù)來過濾數(shù)據(jù)。lodash只是最基礎(chǔ)的庫,其實(shí)可以將幾個(gè)函數(shù)封裝起來組件自己的庫。)
4.filter和reject,過濾集合,傳入匿名函數(shù)。(二者放在一起討論的原因是,兩個(gè)函數(shù)類似但返回的值是相反。)

_.filter([1,2],x => x = 1)
// => [1]
 
_.reject([1,2],x => x=1)
// => [2]

這兩個(gè)過濾器,第二個(gè)參數(shù)值是false的時(shí)候返回是reject的功能,相反是true的時(shí)候是filter。
5.map和forEach,數(shù)組遍歷。

區(qū)別是map可以遍歷空數(shù)組,且map可以有返回值。foreach不能return
不過二者都不改變原來的數(shù)組。

_.map([1,2],x => x+1)
// => [2,3]
  1. merge參數(shù)合并
var object = {
  'a': [{ 'b': 2 }, { 'd': 4 }]
};
 
var other = {
  'a': [{ 'c': 3 }, { 'e': 5 }]
};
 
_.merge(object, other);
// => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }

遞歸的將源對(duì)象和繼承的可枚舉字符串監(jiān)控屬性合并到目標(biāo)對(duì)象中。源對(duì)象從左到右引用,后續(xù)來源將覆蓋以前來源的屬性分配。

在實(shí)際開發(fā)中,前端在接口的請(qǐng)求可以merge一下之前的query和現(xiàn)在改變的查詢的值,再去請(qǐng)求后端接口的數(shù)據(jù)。類似state
7.extend,類似參數(shù)對(duì)象合并。

function Foo() {
  this.a = 1;
}
 
function Bar() {
  this.c = 3;
}
 
Foo.prototype.b = 2;
Bar.prototype.d = 4;
 
_.assignIn({ 'a': 0 }, new Foo, new Bar);
// => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }

8.cancat,數(shù)組連接

var array = [1];
var other = _.concat(array, 2, [3], [[4]]);
 
console.log(other);
// => [1, 2, 3, [4]]
 
console.log(array);
// => [1]

9.keys ,取出對(duì)象中所有的key值組成新的數(shù)組。

function Foo() {
  this.a = 1;
  this.b = 2;
}
 
Foo.prototype.c = 3;
 
_.keys(new Foo);
// => ['a', 'b'] (iteration order is not guaranteed)
 
_.keys('hi');
// => ['0', '1']
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容