簡體   English   中英

使用基於屬性值的 lodash 過濾對象數組

[英]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)

使用lodash

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)

在此處輸入圖片說明

原生 JavaScript:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM