Javascript Json数据结构的重组

Javascript Json数据结构的重组,javascript,arrays,json,node.js,multidimensional-array,Javascript,Arrays,Json,Node.js,Multidimensional Array,我正在尝试转换此JSON: [ [ { "id": 1, "ac": 1 }, { "id": 2, "ac": 1 }, { "id": 3, "ac": 1 } ], [ { "id": 1,

我正在尝试转换此JSON:

[
    [
        {
            "id": 1,
            "ac": 1
        },
        {
            "id": 2,
            "ac": 1
        },
        {
            "id": 3,
            "ac": 1
        }
    ],
    [
        {
            "id": 1,
            "ac": 1
        },
        {
            "id": 2,
            "ac": 1
        },
        {
            "id": 3,
            "ac": 0
        }
    ],
    [
        {
            "id": 1,
            "ac": 1
        },
        {
            "id": 2,
            "ac": 1
        },
        {
            "id": 3,
            "ac": 0
        }
    ],
    [
        {
            "id": 1,
            "ac": 1
        },
        {
            "id": 2,
            "ac": 0
        },
        {
            "id": 3,
            "ac": 0
        }
    ],
    [
        {
            "id": 1,
            "ac": 1
        },
        {
            "id": 2,
            "ac": 0
        },
        {
            "id": 3,
            "ac": 0
        }
    ],
    [
        {
            "id": 1,
            "ac": 1
        },
        {
            "id": 2,
            "ac": 0
        },
        {
            "id": 3,
            "ac": 0
        }
    ]
]
在该数据结构中:

[
    [
        {
            "id": 1,
            "ac": [1,1,1,1,1,1]
        }
    ],
    [
        {
            "id": 2,
            "ac": [1,1,1,0,0,0]
        }
    ],
    [
        {
            "id": 3,
            "ac": [1,0,0,0,0,0]
        }
    ]
]
我正在使用JavaScript/node来实现这一点,但我无法让它工作。有人能帮我写一个循环吗

编辑: 我尝试的是,以下内容,但我想它没有多大帮助,因为它仍然不是我需要的输出

var acc_array = [];
var a_id;
for(var y=0; y<data.length; y++) { //151
    if(y<data.length-1){
        a_id = data[y].a_id;
        if(a_id == data[y].a_id) {
            acc_array[y] = new Array();
            acc_array[y].push(data[y].acc);
        }
    }
    if(y==data.length-1){
        acc_array[y] = new Array();
        a_id = data[y].a_id;
        if(a_id == data[y].a_id) {
            acc_array[y].push(data[y].acc);
        }
        jsonfile.writeFile("a.json", acc_array, function (err) {
            console.log(err);
        });
    }
}
var acc_数组=[];
变量a_id;

对于(var y=0;y,可以使用嵌套循环和哈希表来收集具有相同
id
的项

“代码>var资料”是一个以上的数据<<代码>var资料<<<代码>var数据=[{{id:1,ac:1},{id:3,ac:1,ac:1,ac:1,{id:1,ac:1,ac:1,ac:1,{id:1,1,ac:1,ac:1},{id:3,ac:1,ac:1,ac:1,ac:1},{id:1,ac:1,ac:1,ac:1,ac:1,,{id:1,1,ac:1,ac:1,ac:1,ac:1,1,1,ac:1,,{id:1,ac:1,ac:1,ac:1,ac:1,1,ac:1,1,1,1,ac:1,,,,{id:1,ac:1,1,ac:1,ac:1,1,1,1,1 id:1,ac:1},{id:2,ac:0},{id:3,ac:0}]], hash=Object.create(null), 结果=[]; data.forEach(函数(a){ a、 forEach(函数(o){ hash[o.id]| | result.push(hash[o.id]={id:o.id,ac:[]}); 哈希[o.id].ac.push(o.ac); }); }); console.log(结果);

。作为控制台包装{max height:100%!important;top:0;}
您可以使用嵌套循环和哈希表来收集具有相同
id的项

“代码>var资料”是一个以上的数据<<代码>var资料<<<代码>var数据=[{{id:1,ac:1},{id:3,ac:1,ac:1,ac:1,{id:1,ac:1,ac:1,ac:1,{id:1,1,ac:1,ac:1},{id:3,ac:1,ac:1,ac:1,ac:1},{id:1,ac:1,ac:1,ac:1,ac:1,,{id:1,1,ac:1,ac:1,ac:1,ac:1,1,1,ac:1,,{id:1,ac:1,ac:1,ac:1,ac:1,1,ac:1,1,1,1,ac:1,,,,{id:1,ac:1,1,ac:1,ac:1,1,1,1,1 id:1,ac:1},{id:2,ac:0},{id:3,ac:0}]], hash=Object.create(null), 结果=[]; data.forEach(函数(a){ a、 forEach(函数(o){ hash[o.id]| | result.push(hash[o.id]={id:o.id,ac:[]}); 哈希[o.id].ac.push(o.ac); }); }); console.log(结果);
.as console wrapper{max height:100%!important;top:0;}
Array#将所有内容合并到单个数组中,然后使用Array#reduce和helper对象来获得所需对象的数组:

“ac”:1},{“id”3,“ac”:1,”3,“ac”:1,”1,“ac”:1,”1,”1,”ac:1,”1,”1,”1,”1,”1,”1,“ac”:1,”1,ac:1},,{“id”1,”1,1,1,1,1,{“id”:1,1,ac:1,1,{“id”:1,”1,1,1,1,ac:1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 id:1,“ac:1},{id:2,“ac:0},{id:3,“ac:0}]]; var hash=Object.create(null); var结果=[].concat(…数据) .减少(功能(r,o){ var item=hash[o.id]; 如果(!项){ item=hash[o.id]={id:o.id,ac:[]}; r、 推(项); } 项目交流推力(o.ac); 返回r; }, []); console.log(result);Array#将所有内容合并到单个数组,然后使用Array#reduce和helper对象来获得所需对象的数组:

“ac”:1},{“id”3,“ac”:1,”3,“ac”:1,”1,“ac”:1,”1,”1,”ac:1,”1,”1,”1,”1,”1,”1,“ac”:1,”1,ac:1},,{“id”1,”1,1,1,1,1,{“id”:1,1,ac:1,1,{“id”:1,”1,1,1,1,ac:1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 id:1,“ac:1},{id:2,“ac:0},{id:3,“ac:0}]]; var hash=Object.create(null); var结果=[].concat(…数据) .减少(功能(r,o){ var item=hash[o.id]; 如果(!项){ item=hash[o.id]={id:o.id,ac:[]}; r、 推(项); } 项目交流推力(o.ac); 返回r; }, []);
console.log(result);您已经尝试过什么?它是按id 1、2、3的顺序排列的吗?因为它是一个JS数组,所以顺序永远无法保证没有?您已经尝试过什么?它是按id 1、2、3的顺序排列的吗?因为它是一个JS数组,所以顺序永远无法保证没有?