0

I am searching to delete duplicate object stored in my array. This object are sent in JSON. This is its structure :

{  
  "name":"root",
  "children":[  
    {  
      "name":"name1",
      "children":[  
        {  
          "name":"name1",
          "level":1
        }
      ]
    },
    {  
      "name":"name1",
      "children":[  
        {  
          "name":"name1",
          "level":1
        }
      ]
    },
    {  
      "name":"name2",
      "children":[  
        {  
          "name":"name2",
          "level":3
        }
      ]
    }
  ]
}

In this case, the first or second object called name1 should be delete because they are exactlly the same.

This is algorithm I use to delete the duplicate but it delete all the object in my array...

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;

Thank for your help.

Anonymous
  • 468
  • 5
  • 26

2 Answers2

1

in your nested loop, you should skip the current object:

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
Regis Portalez
  • 4,675
  • 1
  • 29
  • 41
1

Firstly it's normal if your algorithm delete all the object because, your loop test firstly the current object

see this link to resolve your problem:Remove duplicates from an array of objects in javascript

Community
  • 1
  • 1
user192417
  • 56
  • 1
  • 7