删除Javascript对象中添加了null值的项。

9
我有一个 JavaScript 对象。
finalTitleList =[{"Title":"ffd","Iscompleted":"","Id":0},
                 {"Title":"fdfmdbk","Iscompleted":"","Id":1},
                 {"Title":"fdf,d","Iscompleted":"","Id":2}]

假设我想使用 delete finalTitleList[1] 删除第二个项目,在删除后,它确实将该项目删除,但长度没有更新(快照附上:仅包含2个项目,但显示长度为3)。
因此,当我在使用本地存储添加该对象时,请注意更新数组的长度。
localStorage.setItem("TaskTitleList16", JSON.stringify(finalTitleList));

在删除项目后,它显示为null。

我想完全删除该项,请帮忙。


请注意,delete 只是删除成员,而不会调整数组的长度,因此 length 不受影响。只有数组方法(pushpopsplice 等)才会自动执行该操作。 - RobG
1个回答

11

你想使用的是Array.prototype.splice()

这是一个使用示例:

var a = [1, 2, 3, 4, 5]; 
a.splice(2,1); // Being splice at element 2, deleting (and returning) 1 element
console.log(a); // outputs [1, 2, 4, 5]

在数组中,删除操作与您预期的略有不同,而且不应该被使用。首先,delete不会影响数组的长度。其次,它会在数组中留下未定义的值,这意味着您需要在代码中处理它。

总之,不要在数组上使用delete。有许多内置方法可以用于处理数组,或者将它们组合成自己的操作。请使用它们


非常准确,jdphenix;您可能希望扩展此答案以解释为什么(从数组中删除数字索引等同于将该索引设置为“未定义”,而不是缩小数组)。 - Ethan Brown
不错。John Resig有一个方便的方法,你可能想把它加入到你的答案中。http://ejohn.org/blog/javascript-array-remove/ - naveen
@naveen OP没有提到需要删除任意数量的元素,但如果您认为这是有用的信息,请随意进行编辑。 - jdphenix
我们如何获取数组中当前元素的位置? - Santosh
这正是我所需要的!感谢@jdphenix的解释!干杯!=] - Rohjay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接