3 回答
TA貢獻(xiàn)1871條經(jīng)驗 獲得超13個贊
問題是您只有一個 item對象,您只需在循環(huán)中對其進(jìn)行修改。意識到即使你推入item了一個數(shù)組,這并不意味著你仍然不能改變它。并且您這樣做(在循環(huán)的下一次迭代中),然后item再次推送,因此您的數(shù)組現(xiàn)在有兩個對同一對象的引用(處于其最新狀態(tài))。
旁注:.map旨在返回一個數(shù)組。使用那個力量。
let items = listItems.map((img, index) => {
return { // a NEW object
src: img,
key: index
};
});
甚至更短,通過為變量使用智能名稱和箭頭函數(shù)表達(dá)式語法:
let items = listItems.map((src, key) => ({src, key}));
TA貢獻(xiàn)1828條經(jīng)驗 獲得超13個贊
因為您在同一個對象實例上進(jìn)行操作。由于item.src = img您只是在更新src同一對象實例的屬性,因此您在數(shù)組中獲得了 2 次相同的對象。
您需要為每個項目創(chuàng)建新的對象實例:
const items = listItems.map((src, index) => ({
key: index,
src,
}));
為每個... => ({ ... })項目創(chuàng)建一個新的對象實例,它也可以這樣寫:
const items = listItems.map((src, index) => {
return {
key: index,
src,
}
});
TA貢獻(xiàn)1829條經(jīng)驗 獲得超7個贊
你應(yīng)該做這樣的事情
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)
在地圖內(nèi)創(chuàng)建每個對象并將該對象推送到數(shù)組。
添加回答
舉報
