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