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)
在地图内创建每个对象并将该对象推送到数组。
添加回答
举报
