我有一个由useState挂钩创建的对象数组:
const [arrayOfObjects, setArrayOfObjects] = useState([]);
setArrayOfObjects([{id:1}, {id:2}, {id:3}]);
如何通过setArrayOfObjects函数将属性添加到每个对象,这样它将成为:
[
{
id:1,
name: "one",
},
{
id:2,
name: 'two',
},
{
id:3,
name: 'three',
},
]
谢谢!
答案 0 :(得分:-1)
为此,您可以在数组类型中使用map运算符。这将返回一个新数组,其中您的数据已转换(映射)成其他形式:
let newarrayOfObjects = arrayOfObjects.map(e => {
return {
id: e.id,
name: someVariableWithTheName,
}
});
setArrayOfObjects(newarrayOfObjects);
如果您需要元素的索引来执行某操作,则map方法实际上需要两个参数,第一个是元素,第二个是元素的索引,因此可以这样使用代码:
let newarrayOfObjects = arrayOfObjects.map(e, index => {
return {
id: e.id,
name: index,
}
});
setArrayOfObjects(newarrayOfObjects);
答案 1 :(得分:-1)
定义数组以添加和使用JavaScript数组映射功能。
const additionalArr = [{name: 'one'}, {name: 'two'}, {name: 'three'}];
const newArrayOfObjects = arrayOfObjects.map((obj, idx) => ({
...obj,
...additionalArr[idx]
}));
setArrayOfObjects(newArrayOfObjects);