1 深層查詢屬性值 放入一個陣列
var ownerArr = [{
"owner": "Colin",
"pets": [{
"name": "dog1"
}, {
"name": "dog2"
}]
}, {
"owner": "John",
"pets": [{
"name": "dog3"
}, {
"name": "dog4"
}]
}];
console.log(_.map(ownerArr, "pets[0].name"));
// => ['dog1','dog3']
複製程式碼
2 深拷貝
var objB = _.cloneDeep(objA);
objB === objA // false
複製程式碼
3 隨機數
_.random(15, 20); //15到20的整數
_.random(15, 20, true); //15到20的小數
複製程式碼
4 物件去除屬性
var objA = {"name": "colin", "car": "suzuki", "age": 17};
objA = _.omit(objA, ['car', 'age']);
// => {"name": "colin"}
objA = _.omit(objA, _.isNumber);
// => {"name": "colin", "car": "suzuki"};
複製程式碼
- 物件留下屬性 用法與omit基本一致
_.pick(object, [props])
5 陣列拆分
const arr = [1,2,3,4,5,6,7,8,9];
_.chunk(arr,2) //每兩個拆分為一個新的陣列
// =>[[1,2],[3,4],[5,6],[7,8],[9]]
複製程式碼
6 陣列去除假值 已有 Array.filter(Boolean)代替
_.compact(['1','2',' ',0])
// => ['1','2']
複製程式碼
7 陣列排除含有指定值
_.difference([3, 2, 1], [4, 2]);
// => [3, 1]
複製程式碼
8 陣列去除前n個元素,預設為一個 _.dropRight為去除後面
_.drop([1, 2, 3],n);
// => [2, 3]
複製程式碼
9 陣列返回新的物件
_.fromPairs([['fred', 30], ['barney', 40]]);
// => { 'fred': 30, 'barney': 40 }
複製程式碼
10 陣列交集
_.intersection([2, 1], [4, 2], [1, 2]);
// => [2]
複製程式碼
11 陣列遞迴為一組
_.flattenDeep([1, [2, [3, [4]], 5]]);
// => [1, 2, 3, 4, 5]
複製程式碼
12 陣列合併為物件
_.zipObject(['a', 'b'], [1, 2]);
// => { 'a': 1, 'b': 2 }
複製程式碼
13 陣列強制轉換
_.castArray(1);
// => [1]
_.castArray({ 'a': 1 });
// => [{ 'a': 1 }]
複製程式碼
14 延遲 wait 毫秒後呼叫 func。 呼叫時,任何附加的引數會傳給func。
_.delay(function (text) {
console.log(text);
}, 1000, 'later');
複製程式碼
15 只呼叫一次的函式
var initialize = _.once(fn);
initialize();
initialize();
// `initialize` 只能呼叫 `fn` 一次。
複製程式碼
16 陣列求和
_.sum([4, 2, 8, 6]);
// => 20
複製程式碼
17 物件值求和
var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];
_.sumBy(objects, function(o) { return o.n; });
// => 20
_.sumBy(objects, 'n');
// => 20
複製程式碼
18 數字是否在指定區間 _.inRange(number, [start=0], end)
_.inRange(3, 2, 4);
// => true
_.inRange(4, 8);
// => true
_.inRange(4, 2);
// => false
_.inRange(2, 2);
// => false
_.inRange(1.2, 2);
// => true
_.inRange(5.2, 4);
// => false
_.inRange(-3, -2, -6);
// => true
複製程式碼
19 物件取值放入陣列 _.at(object, [paths])
var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
_.at(object, ['a[0].b.c', 'a[1]']);
// => [3, 4]
複製程式碼
20 移除object物件 path 路徑上的屬性 _.unset(object, path)
// 返回布林值 之前的物件也發生了改變
var object = { 'a': [{ 'b': { 'c': 7 } }] };
_.unset(object, 'a[0].b.c');
// => true
console.log(object);
// => { 'a': [{ 'b': {} }] };
_.unset(object, ['a', '0', 'b', 'c']);
// => true
console.log(object);
// => { 'a': [{ 'b': {} }] };
複製程式碼
21 修改object物件 path 路徑上的屬性
var object = { 'a': [{ 'b': { 'c': 3 } }] };
_.update(object, 'a[0].b.c', function (n) { return n * n; });
console.log(object);
// => { 'a': [{ 'b': { 'c': 3 } }] }
複製程式碼
22 判斷物件是否含有指定屬性
var users = [
{ 'user': 'barney', 'active': true },
{ 'user': 'fred', 'active': false }
];
// The `_.matches` iteratee shorthand.
_.some(users, { 'user': 'barney', 'active': false });
// => false
複製程式碼