You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中替换嵌套对象内部数组的实现问题咨询

代码问题排查及解决方案

现有代码的问题

  • 无实际赋值操作:你使用了逗号运算符webSections.sections[index].questions, newMenu[index],只会执行两个表达式的求值,不会把后者赋值给前者,完全没有修改属性的效果
  • forEach返回值无效:forEach本身没有返回值,你在回调里写return没有任何作用
  • 语法不合法:回调函数的括号不匹配,结尾多写了右括号
  • 结构不匹配:原结构中questions是数组类型,直接赋值newMenu[index](对象类型)会破坏原有结构

正确实现方式

方案1:原地修改原对象

如果可以直接修改原数据,直接在遍历中赋值即可:

webSections.sections.forEach((item, index) => {
  // 原questions是包含单个对象的数组,所以把newMenu对应项包裹成数组赋值
  item.questions = [newMenu[index]]
})

方案2:生成新对象副本(不改动原数据)

如果需要保留原数据不变,用map生成新的sections数组即可:

// originalData是你最外层的原始对象
const newData = {
  ...originalData,
  webSections: {
    ...originalData.webSections,
    sections: originalData.webSections.sections.map((section, idx) => ({
      ...section,
      questions: [newMenu[idx]]
    }))
  }
}

注意事项

你提供的newMenu数组第二项的属性名是item,和其他项的items以及原结构的属性名不一致,属于笔误,建议先修正后再使用,避免后续访问属性时报错。

内容的提问来源于stack exchange,提问作者Ronald

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 05:36:05