【发布时间】:2015-04-11 14:14:02
【问题描述】:
我觉得自己有点像个傻瓜,但我正在努力寻找解决方案。
我有一组数组,我需要使用它们来构建一个 JSON-ish 对象。
例如
[a]
[a, b]
[a, b, c]
[a, b, d]
[e]
[e, f]
[e, f, g]
变成
{
a: {
b: {
c: {}
d: {}
}
}
e: {
f: {
g: {}
}
}
}
等等。
我想做的是:
- 实例化一个空对象,字典
- 取任意长度为 n 的数组
- 遍历数组,这样在数组位置 i,如果 Dictionary[Array[0]]...[Array[i]] 处没有 Dictionary 的属性,我将该属性定义为 Array[i] :{}
我遇到的问题是查看相关属性的任意路径。我不知道如何为我正在寻找的属性名称构建多级路径。即,当 i === 0 时,
var check = Array[i];
typeof Dictionary[check] === 'undefined';
我们将获得预期的行为。但它显然会将整个数组构建为一组平面对象属性(而不是嵌套字典)。
然后我没有办法将下一步添加到 check 变量中 --
...
check = check[Array[i+1];
check = Dictionary[check][Array[i+1]]
并且进一步的排列将不起作用。
我确定我在这里遗漏了一些愚蠢的东西,但我被困住了,如果有人知道的话,我将不胜感激。
并且,需要注意的是,如果可能的话,我只需要使用 jQuery 或 lodash 来执行此操作,如果在普通 JS 中无法合理实现的话。
【问题讨论】:
标签: javascript arrays json recursion reduce