迭代递归函数

时间:2017-12-12 23:12:36

标签: javascript arrays object

我知道这个需要使用递归函数。 需要帮助来转换这个对象

{ '1': {},
  '2': {
         '3': {},
         '4': { '6': {}, '7': {} },
         '5': { '8': {}, '9': {} } 
  }
}

到这个对象数组

[
  { key: 1 },
  { 
    key: 2,
    children: [
                {key: 3},
                {
                  key: 4,
                  children: [{key: 6}, {key: 7}],
                },
                {
                  key: 5,
                  children: [{key: 8}, {key: 9}],
                }
  }

1 个答案:

答案 0 :(得分:1)

您可以使用reduce()方法创建递归函数。

var obj = {"1":{},"2":{"3":{},"4":{"6":{},"7":{}},"5":{"8":{},"9":{}}}}

function f(data) {
  return Object.keys(data).reduce((r, k) => {
    let o = {key: k}
    if (Object.keys(data[k]).length) o.children = f(data[k]);
    r.push(o)
    return r;
  }, [])
}

let result = f(obj)
console.log(result)