如何从数组中创建嵌套对象

Ren*_*mer 4 javascript arrays object

给定一个数组,如 [‘a’, ‘b’, ‘c’]

我怎样才能得到一个对象

{
  current: ‘a’,
  next : { 
    current: ‘b’,
    next: {
      current: ‘c’
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Kel*_*ofs 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));
Run Code Online (Sandbox Code Playgroud)

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


Ori*_*ori 5

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

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

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

console.log(obj)
Run Code Online (Sandbox Code Playgroud)