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

JavaScript如何批量修改嵌套对象中全层级question的属性名?

实现方案

要处理多层嵌套的children节点,用递归遍历所有节点即可,无需手动写多层循环,即使后续children层级加深也能兼容。

完整实现代码

function processNode(node) {
  // 浅拷贝当前节点,避免修改原始数据产生副作用
  const processedNode = {...node}
  // 处理当前节点的questions数组
  if (Array.isArray(processedNode.questions)) {
    processedNode.questions = processedNode.questions.map(question => {
      const { name, ...restProps } = question
      return {
        ...restProps,
        questionName: name
      }
    })
  }
  // 递归处理所有子节点
  if (Array.isArray(processedNode.children)) {
    processedNode.children = processedNode.children.map(child => processNode(child))
  }
  return processedNode
}

// 调用方法处理你的数据
const resultData = processNode(Data)

说明

  1. 你之前的代码存在两个问题:一是Data[0]写法错误,你的Data本身是单个对象不是数组,不需要取索引;二是只提取了根层级的questions数组,没有保留原数据的其他属性和children结构。
  2. 上述实现会完整保留原数据除了name属性之外的所有结构和字段,仅把所有层级questions数组内的name重命名为questionName。
  3. 如果你的场景允许修改原始数据,可以去掉浅拷贝步骤,直接修改入参node的属性即可,性能会更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:57:03