Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.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 如何迭代对象/数组中的项,并构建嵌套的JSON?_Javascript_Json_D3.js_Underscore.js - Fatal编程技术网

Javascript 如何迭代对象/数组中的项,并构建嵌套的JSON?

Javascript 如何迭代对象/数组中的项,并构建嵌套的JSON?,javascript,json,d3.js,underscore.js,Javascript,Json,D3.js,Underscore.js,我正在处理一些JSON数据,我需要从一个对象获取数据,并构建一个JSON对象 编辑:生成的JSON与D3.js图表库一起使用,因此出现了一个奇怪的问题(以及明显的反对票) 从API返回的数据如下所示: var data = [ [ {"id": 1, "key1":"value1", "key2":"value2", "key3":"value3"}, {"id": 2, "key1":"value1", "key2":"value2", "key3":"

我正在处理一些JSON数据,我需要从一个对象获取数据,并构建一个JSON对象

编辑:生成的JSON与D3.js图表库一起使用,因此出现了一个奇怪的问题(以及明显的反对票)

从API返回的数据如下所示:

var data = [
    [
        {"id": 1, "key1":"value1", "key2":"value2", "key3":"value3"},
        {"id": 2, "key1":"value1", "key2":"value2", "key3":"value3"},
        {"id": 3, "key1":"value1", "key2":"value2", "key3":"value3"},
        {"id": 4, "key1":"value1", "key2":"value2", "key3":"value3"},
        {"id": 5, "key1":"value1", "key2":"value2", "key3":"value3"},
        {"id": 6, "key1":"value1", "key2":"value2", "key3":"value3"}
    ]
];
{
    "name" : "1",
    "children" : [
    {
        "name" : "2",
        "children" : [
            {
                "name" : "3",
                "children" : [
                    {
                        "name" : "4",
                        "children" : [
                            {
                                "name" : "5",
                                "children" : [
                                    {
                                        "name" : "6",
                                        "children" : [ ]
                                    }
                                ]
                            }
                        ]
                    }
                ]
            }
        ]
    }]
}
我需要我的JSON将每个对象嵌套在前面的代码中,如下所示:

var data = [
    [
        {"id": 1, "key1":"value1", "key2":"value2", "key3":"value3"},
        {"id": 2, "key1":"value1", "key2":"value2", "key3":"value3"},
        {"id": 3, "key1":"value1", "key2":"value2", "key3":"value3"},
        {"id": 4, "key1":"value1", "key2":"value2", "key3":"value3"},
        {"id": 5, "key1":"value1", "key2":"value2", "key3":"value3"},
        {"id": 6, "key1":"value1", "key2":"value2", "key3":"value3"}
    ]
];
{
    "name" : "1",
    "children" : [
    {
        "name" : "2",
        "children" : [
            {
                "name" : "3",
                "children" : [
                    {
                        "name" : "4",
                        "children" : [
                            {
                                "name" : "5",
                                "children" : [
                                    {
                                        "name" : "6",
                                        "children" : [ ]
                                    }
                                ]
                            }
                        ]
                    }
                ]
            }
        ]
    }]
}
为了演示,我只在6点停下来——我需要一些可以处理N个对象的东西。 目前,我正在使用
\遍历
数据
对象。每个
,但不知道如何嵌套

任何帮助都会很好-谢谢

var数据=[{“id”:1,“key1”:“value1”,“key2”:“value2”,“key3”:“value3”},{“id”:2,“key1”:“value1”,“key2”,“key3”:“value3”},{“id”:1”,“key1”,“key2”:“value2”,“key3”},{“id”:4,“key1”:“value1”,“key2”:“value2”,“key3”},{“id”:5,“key1”:“value1”,“key2”:“value2”,“key3”:“value3”},{“id”:6,“key1”:“value1”,“key2”:“value2”,“key3”:“value3”}];
var r=(函数rec(d,o,i){
如果(i==-1)返回o;
var t={};
t、 name=d[i].id;
t、 儿童=[];
t、 儿童。推(o);
返回记录(d,t,--i);
})(数据[0],{},数据[0]。长度-1);

document.write(''+JSON.stringify(r,0,2)+'');
这就是我的想法。@isvforall速度快了一点,但我更喜欢我的。。)

var数据=[[{“id”:1,“key1”:“value1”,“key2”:“value2”,“key3”:“value3”},{“id”:2,“key1”:“value1”,“key2”,“key3”:“value3”},{“id”:1”,“key1”,“key2”:“value2”,“key3”:“value3”},{“id”:4,“key1”:“value1”,“key2”,“key3”:“value3”},{“id”:5,“key1”:“value1”,“key2”,“key2”:“value2”,“key3”:”value3“},{“id”:6,“key1”:“value1”,“key2”:“value2”,“key3”:“value3”}];
var result=(函数buildTree(输入,索引){
如果(索引>=input.length)
返回[];
返回[
{
名称:输入[index].id,
子级:构建树(输入,索引+1)
}
];
})(数据[0],0);

document.write(“”+JSON.stringify(结果,0,2)+“”);
我需要这样做,因为我正在构建一个D3树可视化,它使用这种类型的JSONI,如果你的树是递归的,那么你的方法也应该是递归的。我看到的问题是,对于你所问的问题,实际上没有一个过于通用的解决方案。数据可能有一些ID链接父级和子级,而不仅仅是
数组[n+1]
数组[n]的子级
。这使得递归构建对象成为一种不同于任意嵌套N层深度的函数。如果结构确实如此,我会在这里放一些东西。@cdbajorin是的,这就是源数据的外观,以及JSON需要的结构。有什么答案可以解决您的问题吗?欢迎提供反馈。