這真讓我抓狂。
我有一個像這樣的陣列:
myArray = ['A', 'B', 'C', 'D', 'E', 'F', ];
我的代碼正在制作一個新的物件,看起來像這樣:
myNewObj = [
{
name: "A",
displayName: "A"
},
{
name: "B",
displayName: "B"
},
{
name: "C",
displayName: "C"
},
{
name: "C",
displayName: "C"
},
{
name: "D",
displayName: "D"
},
{
name: "E",
displayName: "E"
},
{
name: "F",
displayName: "F"
}
]
我的代碼在 myArray 中獲取值,我想創建 myNewObj
到目前為止我就是這樣做的
我創建了新物件
let newObj = [{
"name": "",
"displayName": ""
}];
然后我使用一個簡單的 FOR NEXT 回圈,它一直作業到一個點并聲稱 newObj[i].name 未定義......當我定義它并在谷歌開發控制臺中看到它時,這怎么可能?
for (let i = 0; i < myArray.length; i ) {
newObj[i].name = myArray[i];
newObj[i].displayName = myArray[i];
myNewObj.push(newObj);
}
但是,我始終收到此錯誤:
newObj[i].name 沒有定義,它會死掉。
uj5u.com熱心網友回復:
使用Array#map:
const myArray = ['A', 'B', 'C', 'D', 'E', 'F'];
const myNewArray = myArray.map(e => ({ name: e, displayName: e }));
console.log(myNewArray);
您的解決方案(您需要將陣列初始化為[]并在每次迭代中創建一個新物件以推送它):
const myArray = ['A', 'B', 'C', 'D', 'E', 'F'];
const myNewArray = [];
for (let i = 0; i < myArray.length; i ) {
const obj = {};
obj.name = myArray[i];
obj.displayName = myArray[i];
myNewArray.push(obj);
}
console.log(myNewArray);
uj5u.com熱心網友回復:
代碼問題
你做錯了Array.Push。你let newObj應該是一個物件,而不是一個陣列。它應該在回圈內初始化。這樣每次執行都會占用不同的記憶體位置。您應該定義myNewObj為一個空陣列,并且應該將您的newObjintomyNewObj陣列推入回圈內。
作業小提琴
const myArray = ['A', 'B', 'C', 'D', 'E', 'F'];
const myNewObj = [];
for (let i = 0; i < myArray.length; i ) {
let newObj = {
"name": "",
"displayName": ""
};
newObj.name = myArray[i];
newObj.displayName = myArray[i];
myNewObj.push(newObj);
};
console.log(myNewObj);
更好的方法
解決此問題的更好方法是使用Array.map. Array.map從現有陣列回傳一個新陣列。您可以運行Array.map在myArray和構建myNewObj陣列如下。
作業小提琴
const myArray = ['A', 'B', 'C', 'D', 'E', 'F'];
const myNewObj = myArray.map((item) => ({ name: item, dispayName: item}));
console.log(myNewObj)
uj5u.com熱心網友回復:
var myArray = ['A', 'B', 'C', 'D', 'E', 'F', ];
var myNewObj = [];
for (let i = 0; i < myArray.length; i ) {
var newObj = {
name:'',
displayName:''
};
newObj['name'] = myArray[i];
newObj['displayName'] = myArray[i];
myNewObj.push(newObj);
}
console.log(myNewObj);
uj5u.com熱心網友回復:
newObj由于某種原因,您試圖將陣列定義為一個物件。只需創建一個新物件。在每次迭代的回圈范圍內創建一個新物件。然后,您可以將該物件推送到空的輸出陣列中。
const letters = ['A', 'B', 'C', 'D', 'E', 'F'];
const arr = [];
for (let i = 0; i < letters.length; i ) {
const obj = {};
obj.name = letters[i];
obj.displayName = letters[i];
arr.push(obj);
}
console.log(arr);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/363668.html
