我正在尝试向属于对象数组一部分的对象添加新属性。 主数组如下所示:
0: {key: 'Fruits', props: Array(22)}
1: {key: 'Dried', props: Array(1)}
2: {key: 'Fresh', props: Array(1)}
3: {key: 'Exotic', props: Array(6)}
4: {key: 'Nuts', props: Array(6)}
我要修改的是props键内的一个对象。当单击与名称匹配的某个对象时,应添加新属性。所以我的代码如下所示:
let updatedFruitsArr = [];
const fruitsArr = [...getFruitsFromLocalStorge()];
// modify the fruits array in order to add a new key to the
// object that matches the name selected
fruitsArr.forEach((fruits) => {
updatedFruitsArr.push({
...fruits,
props: [...fruits.props].map((fruit) => {
if (fruit.name === fruitName) {
return {
...fruit,
isInCart: true
};
} else {
return fruit
}
}),
});
});
但是,每次 updatedFruitsArr 都会返回未添加该属性的原始数组。 你能告诉我我做错了什么吗? 谢谢你
您不需要创建新数组并使用
.forEach
和 .push
,您可以只使用 .map
:
const fruits = [
{
key: 'Fruits',
props: [
{
name: 'Apple'
},
{
name: 'Orange'
},
{
name: 'Pear'
}
]
},
{
key: 'Nuts',
props: [
{
name: 'Cashew'
},
{
name: 'Peanuts'
}
]
}
];
const newFruits = fruits.map(fruitType => {
return {
...fruitType,
props: fruitType.props.map(fruit => {
if(fruit.name === 'Apple'){
return {
...fruit,
isInCart: true
}
} else {
return {
...fruit
}
}
})
}
});
console.log(newFruits);