[英]Function shift() doesn't work inside loop
我正在尝试在for循环内操作数组,在这里我想在数组的末尾添加一个项目,并在数组的开头删除一个元素,如下所示:
var internal = new Array();
for(var i = 0; i < 1000; i++) {
internal[i] = Math.floor(Math.random() * 37);
internal.shift();
console.log(internal.length);
}
问题在于,看起来shift()在循环内不起作用,实际上,没有从数组中删除任何元素!
有解决方案吗?
在这里JsFiddle
每次它减少一倍,但是每次通过数组索引访问来访问它时,它每次都在增长。 代替
internal[i] = Math.floor(Math.random() * 37);
采用
internal.push(Math.floor(Math.random() * 37));
例如,
var internal = [];
internal[3] = "thefourtheye";
console.log(internal);
输出量
[ , , , 'thefourtheye' ]
它为前三个元素留出空间,并在指定的索引处添加了该元素。 因此,它将保持阵列的增长。
注意:使用[]
创建一个新数组,而不是new Array()
因为您使用的是硬编码索引,请尝试
var internal = new Array();
for(var i = 0; i < 1000; i++) {
internal.push(Math.floor(Math.random() * 37));
internal.shift();
console.log(internal.length);
}
演示: 小提琴
//test
var arr = [];
arr[50] = 1;
console.log('arr.length', arr.length);
将打印51
而不是1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.