我正在搜索删除存储在数组中的重复对象。该对象以 JSON 格式发送。这是它的结构:
{
"name":"root",
"children":[
{
"name":"name1",
"children":[
{
"name":"name1",
"level":1
}
]
},
{
"name":"name1",
"children":[
{
"name":"name1",
"level":1
}
]
},
{
"name":"name2",
"children":[
{
"name":"name2",
"level":3
}
]
}
]
}
在这种情况下,应删除名为 name1 的第一个或第二个对象,因为它们完全相同。
这是我用来删除重复项的算法,但它删除了数组中的所有对象...
for (var z in player.children){
var nameObject = playerchildren[z].name;
//console.log(nameObject);
for (var q in player.children){
//console.log(player.children[q].name);
if (nameObject == player.children[q].name){
console.log(nameObject + " = " + myBubble.children[q].name);
// delete player.children[z]; // Delete all ...
} else {
console.log(nameObject + " != " + player.children[q].name);
}
}
}
return player;
感谢您的帮助。
最佳答案
在嵌套循环中,您应该跳过当前对象:
for (var z in player.children){
var nameObject = playerchildren[z].name;
//console.log(nameObject);
for (var q in player.children){
//console.log(player.children[q].name);
if (nameObject == player.children[q].name){
// this is true if z == q. that's why all objects get deleted
for (var z in player.children){
var nameObject = playerchildren[z].name;
//console.log(nameObject);
for (var q in player.children){
//console.log(player.children[q].name);
if ( q !== z && nameObject == player.children[q].name){
// now this should be better
关于javascript - 删除数组中相同的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37073213/