如何将数组转换为嵌套对象

4

给定一个类似于[‘a’, ‘b’, ‘c’]的数组

如何得到一个类似于对象的数据结构

{
  current: ‘a’,
  next : { 
    current: ‘b’,
    next: {
      current: ‘c’
    }
  }
}
2个回答

5
你可以用递归函数实现这个功能:

const data = ['a', 'b', 'c'];

function createObj([current, ...rest]) {
    const result = { current };
    if (rest.length) result.next = createObj(rest);
    return result;
}

console.log(createObj(data));

[current, ...rest] 是一个单独的解构数组参数。


我最终使用了这个答案,因为它也可以轻松地翻译成其他语言。 - RenaissanceProgrammer

5
您可以使用Array.reduceRight()创建对象:

const arr = ['a', 'b', 'c']

const obj = arr.reduceRight((acc, o) => ({
  current: o,
  ...acc && { next: acc }
}), null)

console.log(obj)


两个答案都不错,我不确定该选择哪一个。 - RenaissanceProgrammer
尝试使用它们来适应你的用例,看哪个更易读且更适合你,并确定哪个更有效。 - Ori Drori

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接