Объедините два объекта JSON в один на основе ключей и сохраните значения - PullRequest
0 голосов
/ 26 июня 2018

У меня были следующие 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 голосов
/ 26 июня 2018

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. Нет необходимости в Лодаше. Просто простой Javascript.

...