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

JS中如何通过reduce方法处理数组生成指定结构的嵌套对象

实现方案

方法1:使用reduceRight实现(简洁版)

利用数组反向迭代累加的特性,从最内层空对象开始逐层向外包裹,代码最少,适配任意长度数组:

// 嵌套对象生成函数
function buildNested(arr) {
  return arr.reduceRight((prev, key) => ({ [key]: prev }), {})
}

// 测试用例
const newArr = ['Parent', 'Child']
const result = buildNested(newArr)
console.log(result) // 输出:{ Parent: { Child: {} } },完全匹配你需要的 Parent[Child] = {} 结构

方法2:正向遍历实现(易读版)

如果需要自定义每层的额外逻辑,或者对反向遍历不熟悉,可以用正向遍历逐层生成对象:

function buildNested(arr) {
  const result = {}
  let currentLayer = result
  for (let i = 0; i < arr.length; i++) {
    const key = arr[i]
    currentLayer[key] = i === arr.length - 1 ? {} : {}
    // 指针移动到下一层
    currentLayer = currentLayer[key]
  }
  return result
}

// 长数组测试
const longArr = ['level1', 'level2', 'level3', 'level4']
console.log(buildNested(longArr)) 
// 输出:{ level1: { level2: { level3: { level4: {} } } } }

补充说明

如果需要将根节点挂载到全局作用域直接使用Parent.Child的形式访问,可以在生成结果后加一行:

window['Parent'] = result.Parent

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:36:05