2016-11-04 40 views
1

我的大脑和搜索引擎一样疯狂,但也许我没有用正确的关键字搜索。在javascript中添加子键值对现有数组(或JSON对象?)

有一个列表/阵列/ JSON序列数据(没有在这一点真的很重要),像这样:

{ 
    "program": 1, 
    "program": 2, 
    "program": 3 
} 

,我收到了一个基于节点的插座一系列JSON对象。 IO看起来是这样的:

{ "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. 

这是否更有意义?

+1

{ “关键”: “值”,{}}不是有效的JSON – AMagyar

+0

真!我正在尝试寻找将传入的JSON数据与现有程序值相关联的某种子键值对 - 因此是一个问题。 –

+1

'{“program”:1,“program”:2,“program”:3}'也是无效的 - 重复键。 –

回答

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++) { 
 
\t item = source[i]; 
 
    if (target.hasOwnProperty("program" + item.program)) { 
 
    \t target["program" + item.program].push(
 
    \t {"sequence_number": item.sequence_number} 
 
    ); 
 
    } 
 
} 
 

 
document.getElementById("out").innerHTML = "<pre>" + JSON.stringify(target, null, 2) + "</pre>";
<div id="out"> 
 
</div>

+1

我会更新我的例子! :P – AMagyar

+1

好孩子 - 让它看起来很漂亮;) –

+1

其实我也不知道第二和第三个参数,谢谢! – AMagyar

1

至于溶液可以改变基:

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

,然后可以将数据添加到阵列。

Check this plunker

相关问题