gpt4 book ai didi

javascript - 删除javascript中重复的对象数组对

转载 作者:行者123 更新时间:2023-11-28 15:30:18 24 4
gpt4 key购买 nike

Fiddle Example :

我有一个像这样的对象数组:

var bigarr = 
[
[ { name: 'ABC',id: 391},{ name: 'XYZ',id: 545}],
[ { name: 'EFG',id: 390},{ name: 'XYZ',id: 545}],
[ { name: 'XYZ',id: 545},{ name: 'ABC',id: 391}],
[ { name: 'ABC',id: 391},{ name: 'XYZ',id: 545}]
];

如何删除任何具有 id545391 的重复对象对,以将数组减少为:

var newbigarr = 
[
[ { name: 'ABC',id: 391},{ name: 'XYZ',id: 545}],
[ { name: 'EFG',id: 390},{ name: 'XYZ',id: 545}]
];

我想过通过创建一个新的数组列表来过滤掉重复的对:

[{391: 391,545: 545},{390: 390,545: 545}]

然后迭代它和 bigarr 来构建 newbigarr,但我的代码甚至无法创建该列表。

var test_id = [];
for(var i = 0;i < bigarr.length;i++)
{
var value_obj = {};
for(var j in bigarr[i])
{
var value = bigarr[i][j]["id"];
value_obj[value] = value;
}
test_id.push(value_obj);
}

console.log(test_id);

我正在使用lodash,因此欢迎任何涉及lodash的解决方案。

最佳答案

如果您使用下划线,您可以执行以下操作:

var bigarr = 
[
[ { name: 'ABC',id: 391},{ name: 'XYZ',id: 545}],
[ { name: 'EFG',id: 390},{ name: 'XYZ',id: 545}],
[ { name: 'XYZ',id: 545},{ name: 'ABC',id: 391}],
[ { name: 'ABC',id: 391},{ name: 'XYZ',id: 545}]
];

console.log(_.uniq(bigarr,function(item){
return [
[item[0].id+item[0].name],
[item[1].id+item[1].name]
].sort().toString()
}))

编辑:仅当您始终拥有一对具有 id 和字符串名称的对象时,这才有效。不检查加深的对象或其他键

关于javascript - 删除javascript中重复的对象数组对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27625480/

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