0

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

JV Lobo
  • 5,526
  • 8
  • 34
  • 55
J. Davidson
  • 3,297
  • 13
  • 54
  • 102

1 Answers1

2

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)
zmag
  • 7,825
  • 12
  • 32
  • 42
  • it doesn't work cause I am just trying this this.obj.loc[i].locadd.splice(j,1) The other this.obj.loc.splice(i,1) is just to show on first aray it works fine but nested it is not working – J. Davidson Feb 24 '19 at 03:31
  • I was trying to edit your code snipped didn't know how to. Can you add a second element on locadd[0] than remove the one. Cause I believe that is where it doesn't work. Thanks – J. Davidson Feb 24 '19 at 03:44
  • 2
    @J.Davidson Can you update your post what your intended by code? – zmag Feb 24 '19 at 03:52
  • Thank you for the snippet. Using it I was able to find out issue with j value, once corrected it worked fine. Thanks – J. Davidson Feb 24 '19 at 11:04