javascript - 删除数组中相同的对象

标签 javascript arrays object duplicates

我正在搜索删除存储在数组中的重复对象。该对象以 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/

相关文章:

javascript - Bootstrap 中的 KendoGrid

php - 命中计数器sql错误

java - 一个对象如何从另一个类中创建的对象调用方法

javascript - 如何为 while 循环构建正则表达式?

JavaScript DOM - 在创建该元素后访问使用 document.createElement 创建的变量?

javascript - Emscripten Uncaught RangeError : Source is too large, 多个 Float32Arrays

javascript - 为什么在 javascript 中的 JSON 对象数组中创建一个额外的数组数组

JavaScript - 按两个整数属性对数组进行排序

javascript - Javascript 对象是否允许包含空格的键?

node.js - Postman 将 Mongo 数组转换为对象