在Javascript中将数组转换为嵌套的JSON?

May*_*ena 0 javascript arrays jquery logic json

基本上我想创建一个树形结构.例如,如果你有一个包含四个项目['a','b','c','d']的数组,那么我需要一个JSON,这应该是

{a: {b: {c: {d: 0} } } }
Run Code Online (Sandbox Code Playgroud)

JSON的最后一项值为0或者它可以是除object之外的任何值.

Tao*_*oPR 5

转换步骤很简单,循环简单:

  • 反转数组,所以最后一个变成第一个转换(它成为JSON的最内层元素).
  • 遍历每个元素,创建对象的键值对,重复包装.
  • 完成

示例代码:

var array = ['a', 'b', 'c', 'd']; // input array
var json = {}; // output object
array.reverse().forEach(function(el){
    if (Object.keys(json).length==0){
        json[el] = 0;
    }
    else{
        var outer = {};
        outer[el] = json;
        json = outer;
    }
});
Run Code Online (Sandbox Code Playgroud)

产量

{"a":{"b":{"c":{"d":0}}}}