gpt4 book ai didi

javascript - 如何分别存储对象数组中的重复值

转载 作者:行者123 更新时间:2023-12-01 17:16:18 25 4
gpt4 key购买 nike

我在 Javascript 中有这个对象数组:

var arrayData = [
{ id: "0", x: -1, y: 38},
{ id: "1", x: -2.7823, y: 43.444},
{ id: "2", x: -1.1654, y: 38.12088},
{ id: "3", x: -1, y: 38},
{ id: "4", x: -2.7823, y: 43.444 },
{ id: "5", x: -1.1654, y: 38.12088},
{ id: "6", x: -1.1654, y: 38.12088},

]

我需要检查哪些对象具有相同的 x 和 y 属性,并以某种方式单独存储这些对象,以便我以后可以访问它们。我有这个:


var copy = arrayData.slice(0);
// first loop goes over every element
for (var i = 0; i < arrayData.length; i ++) {

// loop over every element in the copy and see if it's the same
for (var w = i + 1; w < copy.length; w++) {
if ((arrayFotos[i].x === copy[w].x) && (arrayFotos[i].y === copy[w].y)) {

if(!duplicates.includes(arrayFotos[i].id))
duplicates.push(arrayFotos[i].id);
if(!duplicates.includes(copy[w].id))
duplicates.push(copy[w].id);
}

}


这会返回一个包含所有对象 ID 的数组重复了 x 和 y 属性,但我需要一种方法来存储它们分开,所以我有:[0,3][1,4][2,5,6]。有没有怎么做?如果您想帮助我,谢谢。

最佳答案

您可以采用哈希表并收集相同坐标的 id

var arrayData = [{ id: "0", x: -1, y: 38 }, { id: "1", x: -2.7823, y: 43.444 },  { id: "2", x: -1.1654, y: 38.12088 }, { id: "3", x: -1, y: 38 }, { id: "4", x: -2.7823, y: 43.444 }, { id: "5", x: -1.1654, y: 38.12088 }, { id: "6", x: -1.1654, y: 38.12088 }],
duplicates
hashtable = {};

for (var i = 0; i < arrayData.length; i++) {
let key = ['x', 'y'].map(k => arrayData[i][k]).join('|');
hashtable[key] = hashtable[key] || [];
hashtable[key].push(arrayData[i].id);
}

duplicates = Object.values(hashtable);

console.log(duplicates);

关于javascript - 如何分别存储对象数组中的重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62553979/

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