在javascript

时间:2016-11-04 11:32:46

标签: javascript arrays json key-value keyvaluepair

疯狂地抨击我的大脑和谷歌搜索,但也许我没有用正确的关键词搜索。

获得了一个列表/数组/ 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
    }
}

这是与舌头尖端相似的东西之一""但已经到了墙。因此,我呼吁社区提供一些智慧,有利的解决方案,或指向任何已知相关教程的正确方向。提前谢谢!

更新08.Oct.2016

为了解决有关我的列表格式错误的评论,如何重组数据,如下:

{
  "program": 1,
  "sequence_list": 
  [
    { "sequence_number": 1 },
    { "sequence_number": 2 }
  ]
},
{
  "program": 2,
  "sequence_list": 
  [
    { "sequence_number": 1 },
    { "sequence_number": 3 },
    { "sequence_number": 2 }
  ]
}
... etc.

这更有意义吗?

2 个答案:

答案 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;
&#13;
&#13;

答案 1 :(得分:1)

至于解决方案,您可以更改基础:

{ 
  "Program 1": [],
  "Program 2": [],
  "Program 3": []
}

然后您可以将数据添加到数组中。

Check this plunker