如何修改JavaScript嵌套数组中指定对象的name属性值?
解决嵌套数组对象属性修改问题
你的代码存在三个核心问题:
forEach无返回值,所以result会是undefined,它仅用于遍历执行操作,不生成新数据return item.name === 'name6'是比较操作(判断是否相等),不是赋值,修改属性要用=而非===forEach回调里的返回值不影响遍历过程,返回null完全没必要
方案1:直接修改原数组(对象是引用类型,可直接操作)
推荐用id匹配目标对象(比name更可靠,避免同名冲突):
const targetId = 4; example?.forEach(group => { group.items.forEach(item => { if (item.id === targetId) { item.name = 'name6'; } }); });
方案2:返回新数组(不修改原数组,适合需要保留原数据的场景)
利用map生成新数组和新对象,避免污染原数据:
const targetId = 4; const result = example?.map(group => ({ // 复制当前group的所有属性 ...group, // 重新生成items数组,仅修改目标对象的name items: group.items.map(item => item.id === targetId ? {...item, name: 'name6'} : item ) }));
内容的提问来源于stack exchange,提问作者Festina
相关产品推荐
相关产品推荐

