[英]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.