0

my below code is not working. i wanna remove any item from my json . i could not achieve that.

How can i remove any item from my json ?

  var Messages = {};
Messages.data = [{
    id: "1",
    message: "Message 1"
}, {
    id: "2",
    message: "Message 2"
}, {
    id: "3",
    message: "Message 3"
}, {
    id: "4",
    message: "Message 4"
}];

deleteItem("Message 3");
console.log(Messages.data);
function deleteItem(index) {
    var i=0;
    for(var prop in Messages.data){
       if(index===Messages.data[i].message){
         Messages.data.splice(Messages.data[i], i);
      }

      i++;
    }

}
Naftali
  • 144,921
  • 39
  • 244
  • 303
Penguen
  • 16,836
  • 42
  • 130
  • 205

2 Answers2

4

Try this:

var Messages={};
Messages.data=[{
    id: "1",
    message: "Message 1"
}, {
    id: "2",
    message: "Message 2"
}, {
    id: "3",
    message: "Message 3"
}, {
    id: "4",
    message: "Message 4"
}];
function deleteItem(index){
    for(var i=0, len=Messages.data.length; i < len; i++){
        console.log(Messages.data[i]);
        if(index===Messages.data[i].message){
            Messages.data.splice(i, 1);
            break;
        }
    }
}
deleteItem("Message 3");
console.log(Messages.data);

You need to break the loop as once we splice the element, length of array gets reduced by 1

Rayon
  • 36,219
  • 4
  • 49
  • 76
1

This line is incorrect:

Messages.data.splice(Messages.data[i], i);

The first argument to splice should be the index of the array where you want to start deleting, and the 2nd argument is the number of items to delete. Therefore, your code should be

Messages.data.splice(i, 1);

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice

Brian Glaz
  • 15,468
  • 4
  • 37
  • 55