3 回答

TA貢獻1871條經驗 獲得超13個贊
問題是您只有一個 item對象,您只需在循環中對其進行修改。意識到即使你推入item了一個數組,這并不意味著你仍然不能改變它。并且您這樣做(在循環的下一次迭代中),然后item再次推送,因此您的數組現在有兩個對同一對象的引用(處于其最新狀態)。
旁注:.map旨在返回一個數組。使用那個力量。
let items = listItems.map((img, index) => {
return { // a NEW object
src: img,
key: index
};
});
甚至更短,通過為變量使用智能名稱和箭頭函數表達式語法:
let items = listItems.map((src, key) => ({src, key}));

TA貢獻1828條經驗 獲得超13個贊
因為您在同一個對象實例上進行操作。由于item.src = img您只是在更新src同一對象實例的屬性,因此您在數組中獲得了 2 次相同的對象。
您需要為每個項目創建新的對象實例:
const items = listItems.map((src, index) => ({
key: index,
src,
}));
為每個... => ({ ... })項目創建一個新的對象實例,它也可以這樣寫:
const items = listItems.map((src, index) => {
return {
key: index,
src,
}
});

TA貢獻1829條經驗 獲得超7個贊
你應該做這樣的事情
const listItems = ["/static/media/m1.895f1b11.jpg", "/static/media/m2.895f1b11.jpg"]
const list = []
listItems.map((item, index) => {
let newObj = {}
newObj.src = item;
newObj.key = index;
list.push(newObj);
} )
console.log(list)
在地圖內創建每個對象并將該對象推送到數組。
添加回答
舉報