使可变键和深度的嵌套对象的最佳方法是什么?

时间:2019-08-21 04:23:16

标签: javascript json loops

制作可变键和深度的嵌套对象的最佳方法是什么?

例如,我想使用数组["one", "two", "three"]并创建以下对象:

{ 
  one: {
    key: value,
    two: {
      key: value2,
      three: {
        key: value3
        }
      }
    }
}

我当时以为可以使用for循环,但是我不确定如何跟踪每个级别。

2 个答案:

答案 0 :(得分:1)

  

reduce方法为每个的值执行提供的函数。   数组(从左到右)。该函数的返回值为   存储在累加器(myObject)中。

var aArray = ['one', 'two', 'three'];
var myObject = {}, i = "";

aArray.reduce(function(oObject, sString) {
  oObject[sString] = { key: "value" + i };
  i++;
  return oObject[sString];
}, myObject);

console.log(myObject);

答案 1 :(得分:1)

您可以使用reduceRight在每个循环中添加一层嵌套。

let arr = ["one", "two", "three"],
    initialValue = { key: arr.length - 1 }

const output = arr.reduceRight((acc, k, i) => 
  ({
      [k]: Object.assign({ key: i }, acc)
  })
, initialValue)

console.log(output)