疯狂地抨击我的大脑和谷歌搜索,但也许我没有用正确的关键词搜索。
获得了一个列表/数组/ JSON序列化数据(此时并不重要),如下所示:
{
"program": 1,
"program": 2,
"program": 3
}
我在基于节点的socket.io上收到一系列JSON对象,如下所示:
{ "program": 1, "sequence_number": 1 }
{ "program": 3, "sequence_number": 2 }
{ "program": 3, "sequence_number": 1 }
{ "program": 2, "sequence_number": 2 }
{ "program": 2, "sequence_number": 1 }
{ "program": 2, "sequence_number": 3 }
我无法搞清楚的是能够将这个传入的JSON(在收到它们时一次一个)推送/注入/合并到我上面的列表中以创建以下内容:
{
"program": 1,
{
"sequence_number": 1
},
"program": 2,
{
"sequence_number": 2,
"sequence_number": 1,
"sequence_number": 3
},
"program": 3,
{
"sequence_number": 2,
"sequence_number": 1
}
}
这是与舌头尖端相似的东西之一""但已经到了墙。因此,我呼吁社区提供一些智慧,有利的解决方案,或指向任何已知相关教程的正确方向。提前谢谢!
为了解决有关我的列表格式错误的评论,如何重组数据,如下:
{
"program": 1,
"sequence_list":
[
{ "sequence_number": 1 },
{ "sequence_number": 2 }
]
},
{
"program": 2,
"sequence_list":
[
{ "sequence_number": 1 },
{ "sequence_number": 3 },
{ "sequence_number": 2 }
]
}
... etc.
这更有意义吗?
答案 0 :(得分:3)
试试这个 - 类似于你所要求的,但是使用有效的Javascript对象。
var target = {
"program1": [],
"program2": [],
"program3": []
};
var source = [
{ "program": 1, "sequence_number": 1 },
{ "program": 3, "sequence_number": 2 },
{ "program": 3, "sequence_number": 1 },
{ "program": 2, "sequence_number": 2 },
{ "program": 2, "sequence_number": 1 },
{ "program": 2, "sequence_number": 3 }
];
for (var i=0; i<source.length; i++) {
item = source[i];
if (target.hasOwnProperty("program" + item.program)) {
target["program" + item.program].push(
{"sequence_number": item.sequence_number}
);
}
}
document.getElementById("out").innerHTML = "<pre>" + JSON.stringify(target, null, 2) + "</pre>";
&#13;
<div id="out">
</div>
&#13;
答案 1 :(得分:1)
至于解决方案,您可以更改基础:
{
"Program 1": [],
"Program 2": [],
"Program 3": []
}
然后您可以将数据添加到数组中。