簡體   English   中英

嵌套循環中的新數組計數器

[英]New array counter within nested loops

我正在研究 JavaScript,我相信我了解這些循環是如何工作的。 但是,我有一個練習,我不明白哪個是計數器的 function,用於填充新數組。 這是練習:

 var animals = ["goat", "cat", "crow"]; var products = ["milk", "cheese", "burger"]; var foodItems = []; var k = 0; for (var i = 0; i < animals.length; i++) { for (var j = 0; j < products.length; j++) { foodItems[k] = animals[i] + products[j]; k++; } } console.log(foodItems);

上面的代碼生成數組["goatmilk", "goatcheese", "goatburger", "catmilk", "catcheese", "catburger", "crowmilk", "crowcheese", "crowburger"] 如果我取出 [k] 計數器,它會給我一個 1 元素數組[crowburger] 如果我把一個零作為foodItems計數器,它也會給我[crowburger] ,但是更大的數字會在crowburger之前在數組中產生undefined的元素(即foodItems[10]等於[undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, "crowburger"] )。

我的問題:[k] 計數器有什么作用,為什么如果用數字代替它會產生undefined的元素加上[crowburger?]

k數組索引 數組是元素的排序列表,標准訪問是使用索引來獲取給定索引處的元素。 索引是從零開始的,它從數組的第一個元素的零開始。

如果始終采用相同的索引,則給定索引處的元素將被新元素替換。

圖案

array[index] = value:
index++;

就像Array#push ,它在數組末尾添加元素,而無需手動維護索引。

array.push(value);

k是外部迭代器。 它控制着全局foodItems空數組的索引,因為如果你在循環的 scope 內聲明它,它就無法在循環外訪問,並且會消失。 因此,通常,您聲明外部數組和迭代器,並且當您遍歷循環時,您將值添加到數組並對其進行迭代。

可以這樣想:

var k = 0 // 所以我們從 foodItems 數組的第一個索引開始 var foodItems = []; // 所以它在開始時被聲明為空

這就是它的基本作用:

foodItems[k] (目前為零)等於 animals[0] + products[0]... 然后 foodItems[1] 是 animal[0] + products[1] 等等。

您不能使用任何數字的原因是它在啟動時沒有任何索引,並且您無法訪問空數組的第 5 個(例如)元素。

k 計數器是 foodItems 的索引 - 在您的情況下,它不能 go 高於 9,即 3x3。

所以第一次你有 k=0

foodItems[0] = "goat"+"milk"

第二個 k++(將 k 加一)

foodItems[1] = "goat"+"cheese"

如果您不想要櫃台,只需推到 foodItems

即更改foodItems[k] = animals[i] + products[j]; to foodItems.push(animals[i] + products[j]);

它會在每次推送時將字符串添加到 foodItems 中的一個新空白位置,從而使每次推送的 foodItems 更長

 var animals = ["goat", "cat", "crow"]; var products = ["milk", "cheese", "burger"]; var foodItems = []; for (var i = 0; i < animals.length; i++) { for (var j = 0; j < products.length; j++) { foodItems.push(animals[i] + products[j]); } } console.log(foodItems);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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