gpt4 book ai didi

javascript - 从对象数组中删除重复项 - 下划线

转载 作者:行者123 更新时间:2023-11-30 07:25:06 27 4
gpt4 key购买 nike

尝试让 _.uniq() 在以下结构上工作:

[
{'x' : 1, 'y': 2},
{'x' : 1, 'y': 2},
{'x' : 2, 'y': 3},
{'x' : 2, 'y': 4},
{'x' : 3, 'y': 4}
]

结果应该在哪里:

[
{'x' : 1, 'y': 2},
{'x' : 2, 'y': 3},
{'x' : 2, 'y': 4},
{'x' : 3, 'y': 4}
]

即删除重复项目。我想避免 stringify,因为我只需要将每个解析回一个 JSON 对象。

如有任何帮助,我们将不胜感激。

编辑:使用下面的 tring Matt 解决方案,我遗漏了一些我认为的东西 - 这不起作用。如果我记录 a 和 b 的值,我会看到

_.uniq($scope.validNotes, function (a, b) {
console.log(a, b);
return a.x === b.x && a.y === b.y;
});


Object {x: 2, y: 3} 0
Object {x: 1, y: 0} 1
Object {x: 2, y: 3} 2
Object {x: 3, y: 2} 3
Object {x: 4, y: 2} 4
Object {x: 5, y: 1} 5

这显然意味着我永远找不到任何骗子

最佳答案

因为两个对象不是=====,只是因为它们有相同的键,所以你需要使用[iterator] argument of the uniq() function ;

_.uniq(myArray, function (item) {
return item.x + item.y;
});

请注意,您需要返回一个唯一的字符串组合;考虑 { x: 11, y: 1 } { x: 1, y: 11 } 的情况;我的代码会将两者解析为 111,并将它们视为相同。

类似于:

_.uniq(myArray, function (item) {
return 'x:' + item.x + 'y:' + item.y;
});

... 会更有弹性,但这当然取决于您的数据的值(value)。

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

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