【发布时间】:2012-09-19 18:44:30
【问题描述】:
我正在开发 javascript 项目,其中有 2 个数组 1. elements 2. elementsOrder ; elementsOrder 数组包含每个元素的名称,elements 数组包含每个元素的所有属性。当我想从每个数组中删除一个元素时,我使用“delete”内置函数执行此操作,但它不会删除元素仅将其设置为未定义,因此我使用拼接方法推出那些未定义的元素,但它没有不行。
是来源:
var s1 = elementsOrder.indexOf(id);
delete elements[s1];
delete elementsOrder[s1];
它完成了这项工作并顺利地将元素一一设置为“未定义”,但是当我这样做时:
var s1 = elementsOrder.indexOf(id);
delete elements[s1];
delete elementsOrder[s1];
elements.splice(s1, 1);
elementsOrder.splice(s1, 1);
使用简单的拼接方法不起作用:
var s1 = elementsOrder.indexOf(id);
elements.splice(s1, 1);
elementsOrder.splice(s1, 1);
我在我的 Javascript Canvas 项目中使用这段代码来为一些画布对象设置动画,这样我可以很容易地看到什么时候“删除”工作顺利,什么时候“取消定义”元素一个接一个,拼接不那么顺利并且没有't 一个一个地放出元素
请看http://jsfiddle.net/7ZuuZ/功能动画,倒数第三个功能
【问题讨论】:
-
给了我们一个 jsfiddle!这将有助于回答的准确性和速度!
-
你为什么要使用删除? splice 足以做你想做的事。 w3schools.com/jsref/jsref_splice.asp
-
添加预期和实际输出!
-
delete确实删除数组上的属性,但由于Array对象仍然只是对象,现有的项目索引不会自动移动。 -
@phil 我编辑了我的帖子,你可以看到我的 jsfidle,请注意功能动画它是底部的第三个功能
标签: javascript arrays element splice