gpt4 book ai didi

javascript - Dedup并获取javascript中对象数组中键的最大值行

转载 作者:行者123 更新时间:2023-11-29 15:59:52 25 4
gpt4 key购买 nike

我有一个对象数组。这个数组有重复的行。需要使用具有最大值的键之一来识别去重行。请注意,它已经按 ID 排序。

var myArray = [
{id: 1, name: 'Foo Bar', email: 'foo@bar.com'},
{id: 2, name: 'Foo Bar', email: 'foo@bar.com'},
{id: 3, name: 'Foo Bar', email: 'foo@bar.com'},
{id: 1, name: 'Jenny Block', email: 'jenny@bar.com'},
{id: 2, name: 'Jenny Block', email: 'jenny@bar.com'},
];

这是对象的示例数组。我需要将以下内容作为输出

var myArray = [  
{id: 3, name: 'Foo Bar', email: 'foo@bar.com'},
{id: 2, name: 'Jenny Block', email: 'jenny@bar.com'},
];



for (var i = 0; i < myArray.length; i++) {
for (var j = i + 1; j < myArray.length; j++) {
if (myArray[i].name === myArray[j].name && myArray[i].email === myArray[j].email) {
myArray.splice(j,1);
}
}
}

该代码仅在有 2 个重复项时才有效。我想要的东西适用于超过 2 个重复项,并且只包含具有最大 ID 的行

最佳答案

您可以在累加器中搜索相同的姓名和电子邮件,如果找不到则推送,或者如果 id 较小则更新。

var array = [{ id: 1, name: 'Foo Bar', email: 'foo@bar.com' }, { id: 2, name: 'Foo Bar', email: 'foo@bar.com' }, { id: 3, name: 'Foo Bar', email: 'foo@bar.com' }, { id: 1, name: 'Jenny Block', email: 'jenny@bar.com' }, { id: 2, name: 'Jenny Block', email: 'jenny@bar.com' }],
result = array.reduce((r, o) => {
var index = r.findIndex(p => o.name === p.name && o.email === p.email);
if (index === -1) {
r.push(o);
return r;
}
if (r[index].id < o.id) {
r[index] = o;
}
return r;
}, []);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - Dedup并获取javascript中对象数组中键的最大值行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54334365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com