J. Davidson
J. Davidson

Reputation: 3307

Removing a item from object with nested arrays

Hi I have object like this

var obj= {
     _id: string;
    name: string;
    loc: [{
         locname: string;
         locId: string;
         locadd: [{
             st: string;
             zip: string;
         }]
     }]
}

Using typescript in angular 2 I want to delete a particular row

deleterow(i, j) {
  // i is index of loc 
  // j is index of locadd
  this.obj.loc.splice(i, 1) //works fine 
  this.obj.loc[i].locadd.splice(j, 1) //doesn't work. I don't get any error just 
  // row is not removed.
}

I am trying solution similar to given in this answer but doesn't work

JavaScript remove item from nested Array

Please let me know how I can remove the an item from locadd Thanks

Upvotes: 0

Views: 1295

Answers (1)

zmag
zmag

Reputation: 8251

You deleted ith loc item. And then, You've referenced ith loc which is next of deleted loc item.

I think locadd should be deleted before delete loc.

this.obj.loc[i].locadd.splice(j,1)
this.obj.loc.splice(i, 1)

Update

I've made a snippet. It seems working.

var obj = {
  loc: [{
    locadd: [{
      st: '1',
      zip: '1',
    },{
      st: '2',
      zip: '2',
    },{
      st: '3',
      zip: '3',
    }]
  }]
};

function deleterow(i, j) {
  // i is index of loc 
  // j is index of locadd
  // this.obj.loc.splice(i, 1) //works fine 
  this.obj.loc[i].locadd.splice(j, 1) //doesn't work. I don't get any error just 
  // row is not removed.
}

console.log(this.obj.loc)
deleterow(0, 1)
console.log(this.obj.loc)

Upvotes: 2

Related Questions