如何从数组在 JavaScript 中创建嵌套的子对象?

Moc*_*rds 0 javascript

这是给定的数组:

[{
  key: 1,
  nodes: {}
}, {
  key: 2,
  nodes: {}
}, {
  key: 3,
  nodes: {}
}]
Run Code Online (Sandbox Code Playgroud)

如何从这个数组在 JavaScript 中创建嵌套的子对象?

[{
  key: 1,
  nodes: [{
    key: 2,
    nodes: [{
      key: 3,
      nodes: []
    }]
  }]
}];
Run Code Online (Sandbox Code Playgroud)

Mar*_*yer 9

这是一个非常好的用例,reduceRight它允许您从内到外构建结构:

let arr = [{
  key: 1,
  nodes: {}
}, {
  key: 2,
  nodes: {}
}, {
  key: 3,
  nodes: {}
}]

let a = arr.reduceRight((arr, {key}) => [{key, nodes: arr}],[])

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