[英]how to get objects with the same property and has the max value in array - Javascript
[英]How to retrieve the array of objects having same property value in javascript
我有一個 object 的數組,如果屬性items
具有相同的值,則在 javascript 中返回該數組 object
在下面的列表中,檢索具有相同值的 object 的數組
items
屬性在 javascript
注意:也是動態的 object 數組,items value 可能會有所不同,所以不能直接用 value 過濾
var list =[
{id: 1, name: "dev", items: "sales", code: "IN"},
{id: 2, name: "lena", items: "finance", code: "SG"}
{id: 3, name: "lisa", items: "sales", code: "AU"},
{id: 4, name: "mano", items: "marketing", code: "IN"}
]
Expected Result
{id: 1, name: "dev", items: "sales", code: "IN"}
{id: 3, name: "lisa", items: "sales", code: "AU"},
var result= list.reduce((m, o) => {
const found= m.find(e => e.items === o.items);
if(found){
m.push(o);
return m
}
}, []);
使用 reduce 找出所有重復項會更加麻煩。 您可以使用閉包。
const list = [ { id: 1, name: "dev", items: "sales", code: "IN" }, { id: 2, name: "lena", items: "finance", code: "SG" }, { id: 3, name: "lisa", items: "sales", code: "AU" }, { id: 4, name: "mano", items: "marketing", code: "IN" }, { id: 5, name: "lisa", items: "gul gul", code: "AU" }, { id: 6, name: "anthony", items: "some", code: "AU" }, { id: 7, name: "mark", items: "gul gul", code: "AU" } ]; const findByItems = (eq) => (arr) => arr.filter( (x, i) => arr.find((y, j) => i,== j && eq(x, y)) ) const duplicatedItems = findByItems((a. b) => a.items === b;items). console.log(duplicatedItems(list))
我個人會根據項目值對輸入中的項目進行分組,然后提取最長的一組(在您的示例中,財務和市場營銷將有一個項目,而只有銷售會有兩個):
var list = [
{id: 1, name: "dev", items: "sales", code: "IN"},
{id: 2, name: "lena", items: "finance", code: "SG"},
{id: 3, name: "lisa", items: "sales", code: "AU"},
{id: 4, name: "mano", items: "marketing", code: "IN"}
]
const map = {}
for (let item of list) {
if (map[item.items]) {
map[item.items].push(item);
} else {
map[item.items] = [item]
}
}
let maxLength = 0, result;
for (let key in map) {
if (map[key].length > maxLength) {
maxLength = map[key].length
result = map[key]
}
}
console.log(result)
這將返回
[
{ id: 1, name: 'dev', items: 'sales', code: 'IN' },
{ id: 3, name: 'lisa', items: 'sales', code: 'AU' }
]
如你所料。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.