gpt4 book ai didi

javascript - 努力重组 Json 数据结构

转载 作者:太空宇宙 更新时间:2023-11-04 01:59:57 25 4
gpt4 key购买 nike

我正在尝试转换此 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);
});
}
}

最佳答案

您可以使用嵌套循环和哈希表来收集具有相同 id 的项目。

var data = [[{ 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 }]],
hash = Object.create(null),
result = [];

data.forEach(function (a) {
a.forEach(function (o) {
hash[o.id] || result.push(hash[o.id] = { id: o.id, ac: [] });
hash[o.id].ac.push(o.ac);
});
});

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 努力重组 Json 数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46382445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com