【发布时间】:2014-12-18 15:12:40
【问题描述】:
也许已经有解决方案,但我找不到。我尝试动态访问多维数组中的不同插槽,但面临不同深度的挑战。基本上,它看起来像这样:
var source = [];
source['lvl1'] = [];
source['lvl1']['lvl2a'] = [];
source['lvl1']['lvl2a']['lvl3'] = "ping";
source['lvl1']['lvl2b'] = "pong";
如果深度是固定的,我可以这样写代码:
var path1 = ["lvl1","lvl2a","lvl3"];
var path2 = ["lvl1","lvl2b"];
console.log(source[path1[0]][path1[1]][path[2]]); // => ping
console.log(source[path2[0]][path2[1]]); // => pong
我的问题是编写适用于两种变体的代码。这会起作用:
switch(path.length)
{
case 1:
console.log(source[path[0]]);
break;
case 2:
console.log(source[path[0]][path[1]]);
break;
case 3:
console.log(source[path[0]][path[1]][path[2]]);
break;
}
但这既不高效也不优雅。有人有其他解决方案,例如与某种循环一起工作吗?!?
谢谢 托马斯
【问题讨论】:
-
请注意,您并没有像这样使用数组,而是向对象添加属性,javascript 没有关联数组。
-
不清楚您在这里实际尝试做什么。
-
最后,我尝试开发一个通用的json配置文件编辑器。我有某种模式文件来描述 json,然后我的脚本一方面创建一个 html 表单来编辑数据,另一方面将更改写回 json 结构。读取并不困难,但更新结构中的值是困难的。
标签: javascript arrays