gpt4 book ai didi

javascript - 删除所有具有重复属性/值但最后一个的对象

转载 作者:行者123 更新时间:2023-12-02 23:07:03 25 4
gpt4 key购买 nike

我需要循环遍历一个对象数组,其中每个对象都有一个电子邮件属性。我的目标是循环遍历数据(CSV),如果任何记录具有相同的电子邮件,我需要删除除最后一个之外的所有记录,因为这将是我最终需要更新的值。我似乎无法弄清楚这一点。

我尝试过使用 .find 但我从未完全成功。我觉得我需要添加它,但我不清楚什么。

let arr = [
{name: 'stefano', email: 'stef@mail.com'},
{name: 'steve', email: 'cuck@mail.com'},
{name: 'weave', email: 'stef@mail.com'},
{name: 'peave', email: 'luck@mail.com'}
];

let keepLast = arr.find( (obj,idx) => {
let found = 0;
if(obj.email === 'stef@mail.com') {
++found;
}
if(found > 1) {
// Somehow remove the previous iteration catch on match
}
});

这就是我现在的处境。我觉得我需要以某种方式记住最后一个索引,这样我知道一旦找到另一个索引就将其删除。

最佳答案

我会减少为由电子邮件索引的对象,从而覆盖该电子邮件键处的前一个对象(如果存在)。然后只需获取该对象的值即可:

let arr = [
{name: 'stefano', email: 'stef@mail.com'},
{name: 'steve', email: 'cuck@mail.com'},
{name: 'weave', email: 'stef@mail.com'},
{name: 'peave', email: 'luck@mail.com'}
];

const output = Object.values(
arr.reduce((a, obj) => {
a[obj.email] = obj;
return a;
}, {})
);
console.log(output);

关于javascript - 删除所有具有重复属性/值但最后一个的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57540783/

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