在JavaScript中如何实现数组转换为嵌套对象的功能?
数组转嵌套对象实现方案
实现思路
可以通过从右往左遍历数组的方式完成嵌套结构的生成:从最内层的空对象开始,每轮遍历将当前数组元素作为键,上一轮生成的对象作为值,逐层向外包裹,最终得到目标嵌套结构。推荐直接使用数组的reduceRight方法完成极简实现,代码可读性高且逻辑清晰。
代码实现
1. reduceRight 极简版本
const arrToNestObj = arr => arr.reduceRight((prev, curr) => ({ [curr]: prev }), {})
2. 普通循环实现版本(兼容低版本环境)
const arrToNestObj = arr => { let result = {} // 倒序遍历数组元素 for (let i = arr.length - 1; i >= 0; i--) { result = { [arr[i]]: result } } return result }
效果验证
调用arrToNestObj(['a', 'b', 'c', 'd', 'e']),将输出符合要求的嵌套对象:
{ a: { b: { c: { d: { e: {} } } } } }
边界情况说明
- 传入空数组时,函数会返回空对象
{},符合预期逻辑 - 支持数组元素为数字、Symbol等合法对象键类型
内容的提问来源于stack exchange,提问作者Chicken Knight
相关产品推荐
相关产品推荐

