关于排序和添加对象存在一个问题,例如:

我有一个字符串a1/b1/c1/d1
spl = "a1/b1/c1/d1".split ("/")并在输出中得到4个元素的数组。
我有一个对象-obj,我需要循环遍历spl数组,并在每个新回合中添加值,现在我会告诉你

for(var i = 0; i < spl.length(); i++){
    // and here's the code I don't know how to write
}

/* there must be something like this
//if obj[spl[0]] is existing then do
i = 0: obj[spl[0]] = {};

//if obj[spl[0]][spl[1]] is existing then do
i = 1: obj[spl[0]][spl[1]] = {};

//if obj[spl[0]][spl[1]][spl[2]] is existing then do
i = 2: obj[spl[0]][spl[1]][spl[2]] = {};

//and if the last element of the massiv is not existing then do
i = 3: obj[spl[0]][spl[1]][spl[2]][spl[3]] = {};

/if the last element of the massiv is existing then do nothing
the end of the cycle*/


也就是说,只要i小于数组的长度,就会添加每个滚动
它应该像这样工作

obj {
    a1:{
        b1:{
            c1:{
                d1:{}
            }
        }
    }
};


例如,如果我在spl中有2个元素,则循环将仅添加2次,如示例中所示,如果5,则5

最佳答案

不知道我是否正确理解了这个问题,这是您想要实现的目标吗?



let obj = {}
let path = 'a1/a2/a3'.split('/')

let current = obj
for (let prop of path) {
  current[prop] = current[prop] || {}
  current = current[prop]
}

console.log(obj)

09-25 19:32