簡體   English   中英

使用forEach迭代數組,添加到對象並為對象鍵使用forEach索引不起作用

[英]Using forEach to iterate an array, add to object and use the forEach index for the object key doesn't work

我想使用forEach迭代數組,然后將該數組的值添加到對象。

當添加到對象中時,我希望能夠使用遞增的數字來命名對象鍵,就像使用i變量計數器使用普通的for loop時一樣。

使用以下代碼:

var myArray = [123, 15, 187, 32];
var testObj = {}
myArray.forEach(function (value, i) {
    console.log('%d: %s', i, value);
    var objectKeyName = "item" + i; // ⬅️ here
    testObj.objectKeyName = value;
});
console.log(testObj);

我希望testObj

{
    item0: 123,
    item1: 15,
    item2: 187,
    item3: 32, 
}

相反,它輸出:

{objectKeyName: 32}

為什么是這樣? 任何幫助是極大的贊賞! 😀

問題是因為您使用變量作為屬性名稱。 在這種情況下,您不能使用點表示法,而必須使用括號表示法來訪問對象。

當前僅在對象中看到一項的原因是,您僅設置了objectKeyName屬性,並在forEach每次迭代中將其覆蓋。

 var myArray = [123, 15, 187, 32]; var testObj = {} myArray.forEach(function(value, i) { var objectKeyName = "item" + i; testObj[objectKeyName] = value; // Note the [] surrounding the variable name here }); console.log(testObj); 

使用testObj[objectKeyName] = value代替testObj.objectKeyName = value 點表示法從字面上分配鍵值。

解決方案在這里

 var myArray = [123, 15, 187, 32]; var testObj = {} myArray.forEach(function(value, i) { testObj["item" + i] = value; }); console.log(testObj); 

var myArray = [123, 15, 187, 32];
var testObj = [];
myArray.forEach(function (value, i) {
    console.log('%d: %s', i, value);
    var objectKeyName = "item" + i; // ⬅️ here
    testObj.push(objectKeyName + ":" + value);
});
console.log(testObj);
testObj.forEach(function (value, i) {
    console.log(value);
});

暫無
暫無

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

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