Javascript:以编程方式构建多维数组
我的目标是通过向数组中添加元素,然后利用该数组访问JSON中的嵌套节点,从而能够跟踪我在JSON树中的位置/深度。现在假设数组Javascript:以编程方式构建多维数组,javascript,json,Javascript,Json,我的目标是通过向数组中添加元素,然后利用该数组访问JSON中的嵌套节点,从而能够跟踪我在JSON树中的位置/深度。现在假设数组foo有一个元素: foo = ["customers"] 因此该元素将作为JSON子元素的引用,例如: jsonTree["customers"] 其中jsonTree类似于: { "customers":{ "name": "J. Goldsmith", "orders": [{ "order": "1", "order": "2" }
foo
有一个元素:
foo = ["customers"]
因此该元素将作为JSON子元素的引用,例如:
jsonTree["customers"]
其中jsonTree类似于:
{
"customers":{
"name": "J. Goldsmith",
"orders": [{
"order": "1",
"order": "2"
}]
}
}
然后,foo
最终改变它的大小并成为
foo = ["customers","orders"]
因此JSON引用将成为
jsonTree["customers"]["orders"]
现在说客户.订单
可以变成客户.订单.订单.日期等
。。。是否有任何方法可以基于foo
数组的N个元素以编程方式使用N个维度构建jsonTree
引用
一些例子:
我有[“约翰”,“威廉姆斯”]
->我想打造作曲家[“约翰”][“威廉姆斯”]
[“Erich”、“Wolfgang”、“Korngold”]->我想构建
作曲家[“Erich”][“Wolfgang”][“Korngold”]
我想你想要的是像我一样的某种查找函数,只是稍微修改了一下,以采用数组而不是多个参数
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;
};
}
你能解释一下你打算用这个做什么吗?它似乎是某种帮助器构造,您试图解决什么问题?此外,示例对象在语法上无效。请在JSFIDLE上设置一个工作示例,演示您的问题。@RocketHazmat数组有一个维度,这就是区别。它的一些成员可能是其他一维数组,但它们不一定是。这是一个嵌套的数据结构。多维数组是均匀的。你可以拥有一个行为类似多维数组的数组,但这不是构建它的唯一方法,也不是以任何方式强制执行它。@RocketHazmat,老实说,我也不是很确定,但我的朋友Google向我透露了以下信息:。虽然这个问题是关于C的,但是答案对于JS来说已经足够了。@Tomalak:那么,多维数组就是一个数组数组,其中的维度是强制的?我从来不知道有这样的建筑存在!我猜这就是我从PHP/JavaScript背景中得到的。我一直使用术语“多维数组”来描述数据结构,如:
var multi=[[1,2,3],[4,5,6],[7,8,9]代码>:-)我想没有什么能阻止你去做var multi=[a',[1,2,3],[b',[4,5,6],[c',[7,8,9,10]代码>:-P
var lookup = generateLookupFunction(jsonTree),
foo = ["customers","orders"];
lookup(foo);
/*[{
"order": "1",
"order": "2"
}] */