我正在尝试操作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
答案 0 :(得分:2)
每次减少一次,但每次通过访问数组索引访问它都会增长它。而不是
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()
答案 1 :(得分:1)
因为您使用的是硬编码索引,请尝试
var internal = new Array();
for(var i = 0; i < 1000; i++) {
internal.push(Math.floor(Math.random() * 37));
internal.shift();
console.log(internal.length);
}
演示:Fiddle
//test
var arr = [];
arr[50] = 1;
console.log('arr.length', arr.length);
将打印51
而不是1