概念簡述
- lodash 是一個類庫
- Lodash 通過降低 array鸵荠、number卷中、objects丹泉、string 等等的使用難度從而讓 JavaScript 變得更簡單
數(shù)組篇
-
_.chunk(array,[size=1]) 切割數(shù)組
作用: 講數(shù)組array拆分成多個size長度的區(qū)塊殿如,并將這些區(qū)塊組成一個新的數(shù)組柴墩,如果array無法分割成等長的區(qū)塊君仆,那么最后的剩余元素將組成一個區(qū)塊翩概。
-
參數(shù)
array :需要處理的數(shù)組
size=1(number):每個數(shù)組區(qū)塊的長度 -
返回
(Array):返回一個包含拆分區(qū)塊的新數(shù)組(相當(dāng)于二維數(shù)組) - demo
let _ = require("lodash");
let arr = [1, 2, 3, 4, 5, 6];
let arr_result = _.chunk(arr, 2);
console.log(arr_result);
//結(jié)果[[1,2],[3,4],[5,6]]
//如果第二個參數(shù)要是4則變成 [[1,2,3,4],[5,6]]
-
_.compact(array) 刨去假值
作用: 創(chuàng)建一個新數(shù)組,包含原數(shù)組中所有的非假值元素返咱。例如false,null,0,"",undefined,NaN都被認(rèn)為假值
let _ = require("lodash");
let arr = [0, 1, NaN, 2, null, 3, undefined];
let arr_result = _.compact(arr);
console.log(arr_result);
//結(jié)果 [1,2,3]
-
_.concat(array,[values]) 兩個數(shù)組鏈接起來
創(chuàng)建一個新的數(shù)組將array與任何數(shù)組或值鏈接在一起
let _ = require("lodash");
let arr = [1];
let arr2 = _.concat(arr, 2, [3], [[4]], { name: "張三" });
console.log(arr2);
console.log(arr);
-
_.difference(array,[values]) 找到不同的
創(chuàng)建一個具有唯一array值得數(shù)組, 每個值不包含在其他給定的數(shù)組中
let _ = require("lodash");
let result = _.difference([3, 2, 100], [100, 2]);
console.log(result);
//結(jié)果就是[3]
-
_.differenceBy(array,[values],condition) 找到不同的帶條件
創(chuàng)建一個具有唯一array值得數(shù)組,
-
參數(shù)
array:要檢查的數(shù)組
[values] :要排除的值
條件 :他是先把2個數(shù)組里面的所有值都執(zhí)行一遍條件钥庇,然后篩選出來 -
返回值
(Array):返回一個過濾值后的新數(shù)組 - demo
let _ = require("lodash");
let result = _.differenceBy(
[{ name: "哈哈" }, { sex: "男" }],
[{ name: "哈哈" }],
"name"
);
console.log(result);
//結(jié)果[{sex:"男"}]
let _ = require("lodash");
let result = _.differenceBy([3.1, 4.2, 5.3], [4.6, 5.1], Math.floor);
console.log(result);
//結(jié)果3.1
let _ = require("lodash");
let result = _.differenceBy([12, 3, 4], [3, 1], function(item) {
return item - 4 > 0;
});
console.log(result);
-
_.drop(array,[n=1]) 從左邊去掉
創(chuàng)建一個切片數(shù)組,去除array前面的n個元素,從左邊開始切割
let _ = require("lodash");
let arr = [1, 2, 3, 4, 5, 6];
let arr_result = _.drop(arr, 3);
console.log(arr_result);
//結(jié)果就是[4,5,6]
//如果要去除的元素個數(shù)比總長都大咖摹,那么返回一個空數(shù)組评姨,要是0就不切割了
-
_.dropRight(array,[n=1]) 從右邊去掉
創(chuàng)建一個切片數(shù)組,去除array前面的n個元素,從右邊開始切割
let _ = require("lodash");
let arr = [1, 2, 3, 4, 5, 6];
let arr_result = _.dropRight(arr, 3);
console.log(arr_result);
//結(jié)果就是[1,2,3]
//如果要去除的元素個數(shù)比總長都大萤晴,那么返回一個空數(shù)組
-
_.dropwhile(array,方法或者條件) 去掉帶條件
創(chuàng)建一個切片數(shù)組吐句,去除滿足方法或者條件的
let _ = require("lodash");
let arr = [1, 2, 3, 4, 5, 6];
let arr_result = _.dropWhile(arr, function(item) {
return item < 4;
});
console.log(arr_result);
//結(jié)果就是[4,5,6]
//如果都不滿足,那么返回一個空數(shù)組
-
_.fill(array,value,[start=0],[end=array.length]) 替換
使用value值來替換(array里面的值),從start位置開始到end位置結(jié)束
-
參數(shù)
array:要填充改變的數(shù)組
value(*): 填充給array的值
start=0 :開始位置(默認(rèn)0)
end=array.length:結(jié)束位置(默認(rèn)array.length) -
返回值
(Array):會改變原數(shù)組 - demo
let _ = require("lodash");
let array = [2, 3, 4];
let result = _.fill(array, "a", 1, 2);
console.log(result);
//結(jié)果就是[2,"a",4]
//要是從0開始那么改變的就是第一位
-
_.findIndex(array,condition,[fromIndex=0]) 找到序號
返回第一個通過條件為真值得元素的索引(index)值,而不是元素本身
-
參數(shù)
array:要搜索的數(shù)組
condition: 條件
[fromIndex=0]: 從第幾個開始找 -
返回值
(number):返回找到元素的索引值(index) ,否則返回就是-1 - demo
let _ = require("lodash");
let user = [
{ user: "哈哈哈", active: true },
{ user: "呵呵呵", active: true },
{ user: "嘿嘿嘿", active: false },
{ user: "哦哦哦", active: false }
];
let result = _.findIndex(user, function(item) {
return !item.active;
});
console.log(result);
//返回的結(jié)果就是2因?yàn)閺?開始
-
_.head(array) 找到第一個元素 等價于 _.first(array)
獲取數(shù)組array的第一個元素
let _ = require("lodash");
let user = [
{ user: "哈哈哈", active: true },
{ user: "呵呵呵", active: true },
{ user: "嘿嘿嘿", active: false },
{ user: "哦哦哦", active: false }
];
let result = _.first(user);
console.log(result);
//結(jié)果就是{user:"哈哈哈",active:true}
-
_.flattenDeep(array) 回歸一維數(shù)組
將array遞歸為一維數(shù)組
let _ = require("lodash");
let user = [1, [2, 3, 4, [6, 8, [9, 10]]]];
let result = _.flattenDeep(user);
console.log(result);
//結(jié)果就是[1,2,3,4,6,8,9,10];
-
_.flattenDepth(array,[depth=1]) 去除數(shù)組指定的層數(shù)
依據(jù)depth遞歸減少array的嵌套層數(shù)
let _ = require("lodash");
let user = [1, [2, 3, 4, [6, 8, [9, 10]]]];
let result = _.flattenDepth(user, 2);
console.log(result);
//結(jié)果[1,2,3,4,6,7,[9,10]]
-
_.intersection([arrays]) 求交集
創(chuàng)建唯一值得數(shù)組硫眯,這個數(shù)組包含所有數(shù)組的共同元素
let _ = require("lodash");
let result = _.intersection([1, 2], [2, 3], [4, 2]);
console.log(result);
//結(jié)果[2]
-
_.intersectionBy([arrays],condition) 求交集
創(chuàng)建唯一值得數(shù)組蕴侧,這個數(shù)組包含所有數(shù)組的共同元素
let _ = require("lodash");
let result = _.intersectionBy(
[1.3, 2.2],
[2.6, 3.9],
[4.1, 2.1],
Math.floor
);
console.log(result);
//結(jié)果[2.2]
let _ = require("lodash");
let result = _.intersectionBy([{ x: 1 }], [{ x: 1 }, { name: 3 }], "x");
console.log(result);
//結(jié)果[{x:1}]
-
_.join([arrays],分隔符) 把數(shù)組變成字符串
將array中的所有元素轉(zhuǎn)換為由分隔符分割的字符串
let _ = require("lodash");
let result = _.join([1, 2, 3, 4], "~");
console.log(result);
//結(jié)果1~2~3~4
-
_.last(array) 找到最后一個元素
獲取array中最后一個元素
let _ = require("lodash");
let result = _.last([1, 2, 3, 4]);
console.log(result);
//結(jié)果就是4
-
_.nth(array,[n=0])
獲取array中第N個元素,如果N為負(fù)數(shù)两入,則返回從數(shù)組結(jié)尾開始的第N個元素
let _ = require("lodash");
let array = [1, 3, 3, 4, 5, 6];
let result = _.nth(array, 0);
console.log(result);
//結(jié)果就是1
-
_.pull(array,[values]) 刪除
移除數(shù)組array中所有和給定值相等的元素净宵,這個方法會改變原數(shù)組。
let _ = require("lodash");
let array = [1, 3, 3, 4, 5, 3, 2, 6, 2];
_.pull(array, 3, 2);
console.log(array);
//結(jié)果就是[1,4,5,6]
-
_.pullAll(array,values)
移除數(shù)組array中所有和給定值相等的元素裹纳,這個方法會改變原數(shù)組择葡。這個元素必須是數(shù)組
let _ = require("lodash");
let array = [1, 3, 3, 4, 5, 3, 2, 6, 2];
_.pullAll(array, [2, 3]);
console.log(array);
//結(jié)果[1,4,5,6]
凡是后面有By都會有迭代器
-
_.pullAllBy(array,values,迭代器)
移除數(shù)組array中所有和給定值相等的元素,這個方法會改變原數(shù)組剃氧。迭代器會優(yōu)先過濾下數(shù)組
-
參數(shù)
array:待檢查的數(shù)組
[values] 要刪除的值,必須是數(shù)組
迭代器:每一個數(shù)組里面的值都需要執(zhí)行 -
返回值
(*):返回array - demo
let _ = require("lodash");
let array = [1.3, 3.2, 3.4, 4.4, 5.3, 3.2, 2.1, 6.7, 2.8];
_.pullAllBy(array, [2, 3], Math.floor);
console.log(array);
//結(jié)果就是 [1.3, 4.4, 5.3, 6.7]
-
_.pullAt(array,[indexes])
根據(jù)索引indexes,移除array中對應(yīng)的元素敏储,并返回被移除元素的數(shù)組,這個方法會改變原數(shù)組
let _ = require("lodash");
let array = [1.3, 3.2, 3.4, 4.4, 5.3, 3.2, 2.1, 6.7, 2.8];
_.pullAt(array, 1);
console.log(array);
//結(jié)果就是[1.3,3.4, 4.4, 5.3, 3.2, 2.1, 6.7, 2.8];
-
_.remove(array,迭代器)
移除迭代器中返回是真的元素
let _ = require("lodash");
let result = _.remove([1, 2, 3, 4, 5, 6], function(item) {
return item % 2 == 0 ? true : false;
});
console.log(result);
-
_.reverse(array)
反轉(zhuǎn)array使得第一個元素變成最后一個元素,這個方法會改變原數(shù)組
let _ = require("lodash");
let array = [1, 2, 3, 4, 2, 5, 6];
_.reverse(array);
console.log(array);
//結(jié)果[6,5,2,4,3,2,1]
-
_.slice(array,[start=0],[end=array.length])
裁剪數(shù)組array,從start位置開始到end結(jié)束(包前不包后) 不改變原數(shù)組
let _ = require("lodash");
let array = [1, 2, 3, 4, 2, 5, 6];
let result = _.slice(array, 0, 4);
console.log(array);
console.log(result);
//結(jié)果[1,2,3,4]
-
_.uniq(array) 去重
創(chuàng)建一個去重后的array的數(shù)組副本,只有第一次出現(xiàn)的元素才能被保留,不會改變原數(shù)組
let _ = require("lodash");
let array = [1, 2, 3, 4, 2, 5, 6];
let result = _.uniq(array);
console.log(array);
console.log(result);
//結(jié)果[1,2,3,4,5,6]