使用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"
}]
}
答案 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:可选。要添加到数组的新项目