2012-09-19 34 views
1

我正在JavaScript项目中,我有2个数组1.元素2. elementsOrder; elementsOrder数组包含每个元素的名称,而elements数组包含每个元素的所有属性。当我想从每个数组中删除一个元素时,我使用“delete”构建函数,但它不删除元素只将它设置为Undefined,因此比我使用splice方法推出那些未定义的元素,但它不会没有工作。JavaScript删除比拼接

的是源:

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); 

使用简单的拼接方法不要” t工作:

var s1 = elementsOrder.indexOf(id); 
elements.splice(s1, 1); 
elementsOrder.splice(s1, 1); 

我用这段代码在我的Javascript Canvas项目中为一些画布对象设置动画效果,这样我就可以很容易地看到“删除”工作顺利并逐个“取消定义”元素,并且拼接不能顺利进行,并且不会逐个放弃元素。

请参阅http://jsfiddle.net/7ZuuZ/工资atantion运作动画,第三个功能从底部

+1

给了我们一个jsfiddle!它会帮助解答准确性和速度! – Phil

+1

你为什么使用删除?拼接足以做你想做的事。 http://www.w3schools.com/jsref/jsref_splice.asp – Mark

+0

添加预期的和实际的输出! – tucuxi

回答

8

为什么不直接拼接摆在首位?

var s1 = elementsOrder.indexOf(id); 
elements.splice(s1,1); 
elementsOrder.splice(s1,1); 

这里没有必要delete这里。

+0

我试过你的方式,但它不工作,它不是这么简单,请参阅http:// jsfiddle.net/7ZuuZ/ – Irakli

+0

是的,你是对的,我的问题不是拼接,我有另一个问题,我已经解决了,所以谢谢反正 – Irakli