关于排序和添加对象存在一个问题,例如:
我有一个字符串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)