Javascript Json数据结构的重组
我正在尝试转换此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,
[
[
{
"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数组,所以顺序永远无法保证没有?