在javascript中使用delete运算符

时间:2015-12-28 18:16:31

标签: javascript

使用delete objec.prop3 [1]删除对象属性后,null将在该对象属性的位置被替换。

代表:

objec: {
  prop1: "aa",
  prop2: "bb",
  prop3: [{
    item1: "i1",
    item2: "i2"
  }, {
    item1: "i3",
    item2: "i4"
  }]
}
for deleting {
  item1: "i3",
  item2: "i4"
}

我正在使用

for (i = 0; i < objec.prop3.length; i++) {
  if (objec.prop3[i].item2 == "i4") {
    delete object.prop3[i]
  }
}
obtained output:
  objec: {
    prop1: "aa",
    prop2: "bb",
    prop3: [{
        item1: "i1",
        item2: "i2"
      },
      null
    ]
  }
required output:
  objec: {
    prop1: "aa",
    prop2: "bb",
    prop3: [{
      item1: "i1",
      item2: "i2"
    }]
  }

1 个答案:

答案 0 :(得分:0)

您试图从数组中删除元素而不是键值对,为此您不能使用delete而是使用某种方法从数组中删除元素。

for (i = 0; i < objec.prop3.length; i++) {
  if (objec.prop3[i].item2 == "i4") {
    object.prop3.splice(i, 1);
  }
}

splice()方法在数组中添加/删除项目,并返回删除的项目。

注意:此方法更改原始数组。

  

方法Array.splice(索引,的howmany,ITEM1,.....,itemX)

索引:必填。一个整数,指定添加/删除项目的位置,使用负值指定数组末尾的位置

howmany:必填。要删除的项目数。如果设置为0,则不会删除任何项目

item1,...,itemX:可选。要添加到数组的新项目