Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:以编程方式构建多维数组_Javascript_Json - Fatal编程技术网

Javascript:以编程方式构建多维数组

Javascript:以编程方式构建多维数组,javascript,json,Javascript,Json,我的目标是通过向数组中添加元素,然后利用该数组访问JSON中的嵌套节点,从而能够跟踪我在JSON树中的位置/深度。现在假设数组foo有一个元素: foo = ["customers"] 因此该元素将作为JSON子元素的引用,例如: jsonTree["customers"] 其中jsonTree类似于: { "customers":{ "name": "J. Goldsmith", "orders": [{ "order": "1", "order": "2" }

我的目标是通过向数组中添加元素,然后利用该数组访问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"]
现在说
客户.订单
可以变成
客户.订单.订单.日期等
。。。是否有任何方法可以基于
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"
}] */