Nok*_*eak 5 javascript arrays foreach for-loop
请考虑以下代码:
function splicer()
{
var arrayElements = ["elem1","elem2","elem3","elem4"];
for(var index in arrayElements)
{
arrayElements.splice(index,1);
}
alert("Elements: "+arrayElements);
}
Run Code Online (Sandbox Code Playgroud)
上述函数应该从数组中删除所有元素"arrayElements".但事实并非如此.
Javascript引擎保持"index"原样并且不介意被修改的数组.人们可能会期待像"for each"循环那样没有这种问题的东西
即使以下代码似乎不起作用:
function splicer()
{
...
for(var index in arrayElements)
{
arrayElements.splice(index--,1);
}
...
}
Run Code Online (Sandbox Code Playgroud)
即使改变变量"索引"的值似乎也不起作用.更改的值在"for(...){...}"块内可用,但是,当循环到达下一次迭代时,该值将重置并从下一个索引继续作为发条.
所以似乎这样的代码可能是唯一的解决方案:
function splicer()
{
var arrayElements = ["elem1","elem2","elem3","elem4"];
for(var index=0;index<arrayElements.length;index++)
{
arrayElements.splice(index--,1);
}
alert("Elements: "+arrayElements);
}
Run Code Online (Sandbox Code Playgroud)
测试:Firefox 16 Beta.
但是在一个"splice()"方法中放置一元运算符似乎一见钟情.
这可能值得考虑到"W3C"它可能关注的人或任何人,以便他们提出一个很好的解决方案.
| 归档时间: |
|
| 查看次数: |
93 次 |
| 最近记录: |