如何在单个函数中更新数组对象每个元素的value值?
解决方法
你的代码无法正常工作的核心原因是:使用带大括号的箭头函数时,必须显式返回值,否则map会生成一个全为undefined的新数组。根据你的需求,分两种场景给出方案:
场景1:直接修改原数组的对象属性
如果不需要保留原数组的原始状态,用forEach更合适,它专门用于遍历数组执行操作,无需返回值:
obj.forEach(x => { x.value = "NA" });
执行后原数组的每个对象value都会被更新为"NA"。
场景2:生成新数组,保留原数组不变
如果需要保留原数组,用map时要正确返回修改后的新对象(避免直接修改原对象):
// 完整写法 const newArr = obj.map(x => { return { ...x, value: "NA" }; }); // 简写形式(去掉大括号,自动返回) const newArr = obj.map(x => ({ ...x, value: "NA" }));
这里用对象扩展运算符...复制原对象的所有属性,再覆盖value字段,生成新对象组成的数组,原数组不受影响。
内容的提问来源于stack exchange,提问作者C Sharper
相关产品推荐
相关产品推荐

