根据键将两个JSON对象合并为一个并保留值

时间:2018-06-26 18:49:26

标签: javascript npm lodash

我有以下2个json对象,它们表示如下数据:

passObject = 
{
  'Topic One' : 4, 'Topic Two' : 10, 'Topic Three' : 1, 'Topic Four' : 1 
}

failObject = 
{
  'Topic Two' : 3, 'Topic One' : 1 
}

我需要将两个对象组合为一个,以产生结果:

resultObject = {
 'topics': [
         { 'Topic One' : { 'pass' : 4, 'fail': 1 } },
         { 'Topic Two' : { 'pass' : 10, 'fail': 3 } },
         { 'Topic Three' : { 'pass' : 1, 'fail': 0 } },
         { 'Topic Four' : { 'pass' : 1, 'fail': 0 } }  
     ]
}

我研究了“ lodash”功能,但无法找到必要的功能。有人能够提出一种如何最有效地完成它的方法吗?

1 个答案:

答案 0 :(得分:0)

passObject = 
{
  'Topic One' : 4, 'Topic Two' : 10, 'Topic Three' : 1, 'Topic Four' : 1 
};

failObject = 
{
  'Topic Two' : 3, 'Topic One' : 1 
};
intObject = {}

for (var k in passObject) {
    intObject[k] = {'pass':passObject[k]}
}
for (var k in failObject) {
    intObject[k]['fail'] = failObject[k]
}
document.write('<p>' + JSON.stringify(intObject) + '</p>')

resultObject = {
 'topics': []
}
for (var k in intObject) {
  d = {}
  d[k] = intObject[k]
  resultObject['topics'].push(d)
}
document.write('<p>' + JSON.stringify(resultObject) + '</p>')

我从一个用于存储键值对的对象开始,避免了列表会带来的查找复杂性。 之后,我将其转换为列表,以便您可以满足API的需求。 无需Lodash。只是简单的Javascript。