Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript For循环的问题_Javascript_Arrays_For Loop_Foreach - Fatal编程技术网

Javascript For循环的问题

Javascript For循环的问题,javascript,arrays,for-loop,foreach,Javascript,Arrays,For Loop,Foreach,考虑以下代码: function splicer() { var arrayElements = ["elem1","elem2","elem3","elem4"]; for(var index in arrayElements) { arrayElements.splice(index,1); } alert("Elements: "+arrayElements); } 上述函数用于从数组中删除所有元素“arrayElements”。但不会 Javascript引擎保持了“索引

考虑以下代码:

function splicer()
{
 var arrayElements = ["elem1","elem2","elem3","elem4"];
 for(var index in arrayElements)
 {
  arrayElements.splice(index,1);
 }
 alert("Elements: "+arrayElements);
}
上述函数用于从数组中删除所有元素
“arrayElements”
。但不会

Javascript引擎保持了
“索引”
,不介意修改数组。 对于不存在此类问题的每个“循环,人们可能会期望类似于
”的内容

甚至以下代码似乎也不起作用:

function splicer()
{
...
 for(var index in arrayElements)
 {
  arrayElements.splice(index--,1);
 }
...
}
即使更改变量“index”的值也似乎不起作用。 更改后的值在“for(…){…}”块中可用,但是,当循环到达下一个迭代时,该值将被重置并作为时钟从下一个索引继续

因此,看起来这可能是唯一的解决方案:

function splicer()
{
 var arrayElements = ["elem1","elem2","elem3","elem4"];
 for(var index=0;index<arrayElements.length;index++)
 {
  arrayElements.splice(index--,1);
 }
 alert("Elements: "+arrayElements);
}
函数拼接器()
{
变量数组元素=[“elem1”、“elem2”、“elem3”、“elem4”];
对于(var index=0;index,您可能需要参考John Resig的
array.remove()

//数组删除-由John Resig(麻省理工学院授权)
Array.prototype.remove=函数(从,到){
var rest=this.slice((to | | from)+1 | | this.length);
this.length=from<0?this.length+from:from;
返回此。推。应用(此,其余);
};
试试这个:

*拼接修改原始数组,因此tge循环跳过备用值*


可能重复的非替代值它只是逐步跳过。第一次迭代跳过一个,第二次跳过两个,不包括它已经跳过的第一个。等等…我不强调清空数组!我希望观众可能会想到一个可能的解决方案/解释这种场景中的JavaScript行为,如果你看到e-,它清楚地写着,
此方法改变了原始数组。
让我为您创建一个小提琴,希望它能让事情变得清楚。我会在某个时候发布它。D这段代码看起来不错。但是修改了“开箱即用”数组对象听起来不是一个好主意。顺便说一句,代码片段乍一看不是用户友好的。编写此代码的人可能已经仔细地完成了此操作,他一定非常擅长此操作…@CrystalPaladin链接为您提供了一个未使用原型的示例。
// Array Remove - By John Resig (MIT Licensed)
Array.prototype.remove = function(from, to) {
  var rest = this.slice((to || from) + 1 || this.length);
  this.length = from < 0 ? this.length + from : from;
  return this.push.apply(this, rest);
};
var arrayElements = ["elem1","elem2","elem3","elem4"];
arrayElements.splice(0,arrayElements.length);
alert("Elements: "+arrayElements)