簡體   English   中英

函數shift()在循環內不起作用

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM