2017-01-22 5 views
2

У меня есть 2 ключевых карты, которые я бы хотел перебрать. Если ключ тот же, то я хочу использовать _.assign() для переопределения значений. Например:Как выполнить итерацию с помощью сопоставления клавиш и сравнить с другим сопоставлением клавиш с использованием функционального программирования

var keyMap1 = { 
    1: { 
    id: 1, 
    name: 'egg' 
    }, 
    2: { 
    id: 2, 
    name: 'bacon' 
    } 
}; 

var keyMap2 = { 
    1: { 
    id: 1, 
    quantity: 3 
    }, 
    2: { 
    id: 2, 
    quantity: 2 
    } 
}; 

// something like this, preferably with lodash 
var result = _.compareKeys(override, keyMap1, keyMap2); 

function override(obj1, obj2){ 
    return _.assign(obj1, obj2) 
} 
console.log(result); 
// => { 1: { id: 1, name: 'egg', quantity: 3 }, 2: { id: 2, name: 'bacon', quantity: 2 } }; 

ответ

4

Если я понять ваш запрос, вы не могли бы просто использовать _.merge делать как сравнивать и назначать?

var keyMap1 = { 
 
    1: { 
 
    id: 1, 
 
    name: 'egg' 
 
    }, 
 
    2: { 
 
    id: 2, 
 
    name: 'bacon' 
 
    } 
 
}; 
 

 
var keyMap2 = { 
 
    1: { 
 
    id: 1, 
 
    quantity: 3 
 
    }, 
 
    2: { 
 
    id: 2, 
 
    quantity: 2 
 
    } 
 
}; 
 

 
var result = _.merge({}, keyMap1, keyMap2); 
 
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>