我的目标是通过向Array添加元素然后使用此Array访问JSON中的嵌套节点,能够在JSON树中跟踪我的位置/深度。现在说数组foo
它有一个元素:
foo = ["customers"]
这样该元素就可以作为JSON孩子的参考,比如说:
jsonTree["customers"]
其中jsonTree类似于:
{
"customers":{
"name": "J. Goldsmith",
"orders": [{
"order": "1",
"order": "2"
}]
}
}
然后foo
最终会改变其大小并成为
foo = ["customers","orders"]
因此JSON引用将成为
jsonTree["customers"]["orders"]
现在说customers.orders
可以成为customers.orders.order.date.etc.etc
...有没有办法以编程方式使用基于jsonTree
数组的N个元素的N维构建foo
引用?
一些例子:
我有["John","Williams"]
- >我想建立composer["John"]["Williams"]
[“Erich”,“Wolfgang”,“Korngold”] - >我想建立composer["Erich"]["Wolfgang"]["Korngold"]
答案 0 :(得分:2)
我认为你想要的是某种查找函数,比如我describe here,除了略微修改以获取数组而不是多个参数
function generateLookupFunction(o) {
return function lookup(arr) {
var i, e = o;
for (i = 0; i < arr.length; ++i) {
if (!e.hasOwnProperty(arr[i]))
throw "PathNotFoundError: " + arr.slice(0, i + 1).join('/');
e = e[arr[i]];
}
return e;
};
}
然后
var lookup = generateLookupFunction(jsonTree),
foo = ["customers","orders"];
lookup(foo);
/*[{
"order": "1",
"order": "2"
}] */