用于don和xB4的Javascript;t完全数组循环
我正在尝试构建一个包含12个位置的数组的循环,用包装5个项目,并在此间隔后插入另一个代码,但由于某些原因,循环只会增加到10个。 为什么只有当阵列有11或12个位置时,循环才会停止在第十个位置? 有人能给我解释一下原因吗用于don和xB4的Javascript;t完全数组循环,javascript,arrays,for-loop,foreach,array.prototype.map,Javascript,Arrays,For Loop,Foreach,Array.prototype.map,我正在尝试构建一个包含12个位置的数组的循环,用包装5个项目,并在此间隔后插入另一个代码,但由于某些原因,循环只会增加到10个。 为什么只有当阵列有11或12个位置时,循环才会停止在第十个位置? 有人能给我解释一下原因吗 let x = [0,1,2,3,4,5,6,7,8,9,10,11]; x.map(_=> { console.log("<div>"); x.splice(0,5).map((y,k)=> console.log('i
let x = [0,1,2,3,4,5,6,7,8,9,10,11];
x.map(_=> {
console.log("<div>");
x.splice(0,5).map((y,k)=>
console.log('item: ' + y)
)
console.log("</div>");
console.log('interval of 5 text');
});
x = [0,1,2,3,4,5,6,7,8,9,10,11];
for(i=0; i < x.length; i++){
let x2 = x.splice(0,5);
console.log("<div>");
for(j=0; j < x2.length; j++){
console.log('item: ' + x2[j]);
}
console.log("</div>");
console.log('interval of 5');
}
设x=[0,1,2,3,4,5,6,7,8,9,10,11];
x、 映射(=>{
控制台日志(“”);
x、 拼接(0,5).map((y,k)=>
console.log('item:'+y)
)
控制台日志(“”);
console.log('5个文本的间隔');
});
x=[0,1,2,3,4,5,6,7,8,9,10,11];
对于(i=0;i
这是因为您在迭代时更改了原始数组:
let x2 = x.splice(0,5); // should be avoided.
随着每次更改,数组的长度也会减少。这是因为您在迭代时更改了原始数组:
let x2 = x.splice(0,5); // should be avoided.
随着每次更改,数组的长度也会减少。使用数组.切片(…)代替数组.拼接(…)
由于使用(…i由于使用(…i
splice
方法(因为它是改变数组的东西),并在每次迭代中将数组x
的长度记录到控制台中
x=[0,1,2,3,4,5,6,7,8,9,10,11];
对于(变量i=0;i }
来回答您的问题
让我稍微清除一下这个循环,只保留splice
方法(因为它是改变数组的东西),并在每次迭代中将数组x
的长度记录到控制台中
x=[0,1,2,3,4,5,6,7,8,9,10,11];
对于(变量i=0;i }
在循环时更改循环中的数组从来都不是一个好主意。如果理论上我可以控制它,为什么不呢?不管怎样,我只是想理解为什么只有当数组有11或12个位置时,循环才会停止在第十个位置?因为你在循环中改变数组在循环中改变数组从来都不是一个好主意如果理论上我能控制它,为什么不呢?无论如何,我只是想了解为什么只有当数组有11或12个位置时,循环才会停止在第10个位置?因为你在循环中改变了数组谢谢!我可能会用while(x.length)代替or map。@ThiagoMachado Yes将循环更改为while(x.length>0)
在这种情况下确实有效,但这肯定是错误的做法。你到底想达到什么目的?(我相信有更好的解决方案)我想运行整个阵列,就像我在帖子中写的那样,并确保阵列最终会被清理。谢谢!这让我明白了很多。谢谢!我可能会用while(x.length)代替or map。@ThiagoMachado Yes将循环更改为while(x.length>0)
在这种情况下确实有效,但这肯定是错误的做法。你到底想达到什么目的?(我相信有更好的解决方案)我想运行整个阵列,就像我在帖子中写的那样,并确保阵列最终会被清理。谢谢!这让我明白了很多。