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
相关产品推荐
相关产品推荐

