Объединить два объекта в один

327
22 февраля 2018, 16:15

есть два объекта

Первый win = {vasya:2,petya:1,kolya:3}
Второй loss = {kolya:1,vasya:2,petya:4}

Как объединить в объект по следующему принципу

{
  vasya: {
    win: 2,
    loss: 2
  },
  petya: {
    win: 1,
    loss: 4
  },
  kolya: {
    win: 3,
    loss: 1
  }
}
Answer 1

const win = { 
  vasya: 2, 
  petya: 1, 
  kolya: 3 
} 
const loss = { 
  kolya: 1, 
  vasya: 2, 
  petya: 4 
} 
let result = {} 
 
Object.keys(win).forEach(key => { 
  result = { 
    ...result, 
    [key]: { 
      ...result[key], 
      win: win[key] 
    } 
  } 
}) 
 
Object.keys(loss).forEach(key => { 
  result = { 
    ...result, 
    [key]: { 
      ...result[key], 
      loss: loss[key] 
    } 
  } 
}) 
 
console.log(result)

Answer 2

как вариант, но мне не нравится с each

var win  = { vasya: 2, petya: 1, kolya: 3}; 
var loss = { kolya: 1, vasya: 2, petya: 4}; 
 
var w = {},l = {}; 
$.each(win, function(k,v){ w[k] = { win: v }; }); 
$.each(loss, function(k,v) { l[k] = { loss: v }; }); 
 
// или 
//var cb = function(o, x){ return function(k,v){ o[k] = {[x]: v}} }; 
//$.each(win, cb(w, 'win')); 
//$.each(loss, cb(l, 'loss')); 
 
var result =  $.extend(true, {}, w,l); 
console.log(result);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Answer 3
var res = {}
res.forEach = function(handler){ for(var k in this){ if(typeof this[k] != 'function')handler(k, this[k]) }}
win.forEach((k, v)=>{ res[k] = res[k] || { win: 0, loss: 0 }; res[k].win += v; })
loss.forEach((k, v)=>{ res[k] = res[k] || { win: 0, loss: 0 }; res[k].loss += v; })
READ ALSO
Как поменять название кнопки (Submit), которая генерируется автоматически ангуляром

Как поменять название кнопки (Submit), которая генерируется автоматически ангуляром

Используем json schema для создания формыАнгуляр автоматически создает кнопку submit

195
Как повесить событие клика на элементы с одинаковыми классами?

Как повесить событие клика на элементы с одинаковыми классами?

Допустим есть несколько блоков с одинаковыми классами

259
Вложенность меню

Вложенность меню

здравствуйте, у меня такой вопрос, у меня есть меню, в нем ul, в каждой ul есть liКаждый последующий элемент зависит по высоте от дочки

234
Firebase Вывести списком JS

Firebase Вывести списком JS

Нужно вывести все дочерние элементы списком "< ul>< /ul>"

274