![](/img/trans.png)
[英]Filtering array of Objects Using Lodash or Javascript based on property name
[英]Filtering array of objects with lodash based on property value
我們有一個這樣的對象數組
var myArr = [ {name: "john", age: 23},
{name: "john", age: 43},
{name: "jim", age: 101},
{name: "bob", age: 67} ];
如何從 myArr 中獲取名稱為 john 和 lodash 的對象列表?
使用 lodash _.filter
方法:
_.filter(collection, [predicate=_.identity])
迭代集合的元素,返回所有元素的數組,謂詞返回真值。 謂詞使用三個參數調用:(值、索引|鍵、集合)。
將謂詞作為自定義函數
_.filter(myArr, function(o) {
return o.name == 'john';
});
將謂詞作為過濾對象的一部分( _.matches
iteratee 簡寫)
_.filter(myArr, {name: 'john'});
with predicate as [key, value] 數組( _.matchesProperty
iteratee 簡寫。)
_.filter(myArr, ['name', 'John']);
文檔參考: https : //lodash.com/docs/4.17.4#filter
Lodash 有一個類似於 jQuery 的“map”函數:
var myArr = [{ name: "john", age:23 }, { name: "john", age:43 }, { name: "jimi", age:10 }, { name: "bobi", age:67 }]; var johns = _.map(myArr, function(o) { if (o.name == "john") return o; }); // Remove undefines from the array johns = _.without(johns, undefined)
const myArr = [ {name: "john", age: 23},
{name: "john", age: 43},
{name: "jim", age: 101},
{name: "bob", age: 67} ];
const johnArr = _.filter(myArr, person => person.name === 'john');
console.log(johnArr)
const myArr = [ {name: "john", age: 23},
{name: "john", age: 43},
{name: "jim", age: 101},
{name: "bob", age: 67} ];
const johnArr = myArr.filter(person => person.name === 'john');
console.log(johnArr);
**按姓名、年齡過濾**也可以使用地圖功能
地圖和過濾器的區別
1. map - map() 方法使用為每個數組元素調用函數的結果創建一個新數組。 map 方法允許根據用戶的偏好操作數組中的項目,在一個全新的數組中返回所選操作的結論。 例如,考慮以下數組:
2. filter - filter() 方法創建一個數組,其中填充了所有通過所提供函數實現的測試的數組元素。 filter 方法非常適用於用戶必須識別數組中具有共同特征的某些項目的特定情況。 例如,考慮以下數組:
const users = [
{ name: "john", age: 23 },
{ name: "john", age:43 },
{ name: "jim", age: 101 },
{ name: "bob", age: 67 }
];
const user = _.filter(users, {name: 'jim', age: 101});
console.log(user);
let myArr = [ { name: "john", age: 23 }, { name: "john", age: 43 }, { name: "jim", age: 101 }, { name: "bob", age: 67 }, ]; // this will return old object (myArr) with items named 'john' let list = _.filter(myArr, item => item.name === 'jhon'); // this will return new object referenc (new Object) with items named 'john' let list = _.map(myArr, item => item.name === 'jhon').filter(item => item.name);
let myArr = [
{ name: "john", age: 23 },
{ name: "john", age: 43 },
{ name: "jim", age: 101 },
{ name: "bob", age: 67 },
];
let list = _.filter(myArr, item => item.name === "john");
lodash 還有一個 remove 方法
var myArr = [
{ name: "john", age: 23 },
{ name: "john", age: 43 },
{ name: "jim", age: 101 },
{ name: "bob", age: 67 }
];
var onlyJohn = myArr.remove( person => { return person.name == "john" })
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.