Копирование свойств из одного объекта в другой с условием
Lazy-me задается вопросом, есть ли лучший способ скопировать свойства в один объект (источник) на другой объект (назначение), только если свойства существуют в последнем? Он не обязательно должен использовать подчеркивание.
например,
_.mixin({
assign: function (o, destination, source) {
for (var property in source) {
if (destination.hasOwnProperty(property)) {
destination[property] = source[property];
}
}
return destination;
}
});
console.log( _().assign({ a: 1, b: 2, d: 3 }, { a: 4, c: 5 }) ) // a: 4, b: 2, d: 3
2 ответов
использовать Object.assign(obj1, obj2);
(Если свойства существуют в последнем), который является родным в ES6 (без подчеркивания.js требуется).
Объект.методом assign() используется для копирования значений всех перечисляемые собственные свойства от одного или нескольких объектов-источников до цели объект. Он вернет целевой объект. подробнее здесь.
пример:
var o1 = { a: 1 };
var o2 = { b: 2 };
var o3 = { c: 3 };
var obj = Object.assign(o1, o2, o3);
console.log(obj);
альтернативно использовать undescore.js
_.extend(destination, *sources)
или
_.extendOwn(destination, *sources)
Detailated информацию можно найти здесь: http://underscorejs.org/#extend