gpt4 book ai didi

javascript - 从嵌套对象数组中删除重复项并保留其顺序 : javascript

转载 作者:行者123 更新时间:2023-11-30 09:35:18 27 4
gpt4 key购买 nike

我需要在不影响顺序的情况下从数组中删除重复项。请考虑这组数据

var array = [  { person: { amount: [1,1] } },
{ person: { amount: [1,1] } },
{ person: { amount: [2,1] } },
{ person: { amount: [1,2] } },
{ person: { amount: [1,2] } }];

我知道它可以通过使用 new Set([iterable]) 来完成,但不能使用这个数组。如果有人有想法,请帮忙。提前致谢。

最佳答案

您可以将元素转换为 JSON 并将它们用作 Map 的键,然后将其转换回数组(现在由 Nina Scholz 建议更新):

var array = [  
{ person: { amount: [1,1] } },
{ person: { amount: [1,1] } },
{ person: { amount: [2,1] } },
{ person: { amount: [1,2] } },
{ person: { amount: [1,2] } }
];

var result = [...new Map(array.map( o => [JSON.stringify(o), o])).values()];

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

Map 维护向其添加项目的顺序,因此此过程不会更改原始顺序。

您也可以使用中间 Set 而不是 Map 来完成它,但是您需要从 JSON 重建对象,当您的对象中有一些不兼容 JSON 的非键属性时,这会限制功能(比如函数):

var result = Array.from(new Set(array.map( o => JSON.stringify(o))), s => JSON.parse(s));

关于javascript - 从嵌套对象数组中删除重复项并保留其顺序 : javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43893124/

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