Есть три массива с повторяющимся _id
ключами, нужно их смержить или объединить в один, при этом что-бы не было дубликатов с ключём _id
.
var arr1 = [
{
'_id': '1',
'man': 20
},
{
'_id': '2',
'man': 15
}
]
var arr2 = [
{
'_id': '1',
'woman': 13
},
{
'_id': '2',
'woman': 18
}
]
var arr3 = [
{
'_id': '1',
'animal': 2
},
{
'_id': '2',
'animal': 8
}
]
Нужно что-бы в результате получилось так
[
{
'_id': '1',
'woman': 13
'man': 20
'animal': 2
},
{
'_id': '2',
'woman': 18
'man': 15
'animal': 8
}
]
Каким образом сделать объединение массивов эффективно в одном цикле? Или может есть специальный метод lodash?
var arr1 = [{ _id: '1', man: 20 }, { _id: '2', man: 15 }]
, arr2 = [{ _id: '1', woman: 13 }, { _id: '2', woman: 18 }]
, arr3 = [{ _id: '1', animal: 2 }, { _id: '2', animal: 8 }];
var id = '_id'
, data = {};
[].concat(arr1, arr2, arr3).forEach(function(item) {
if (id in item) {
var key = item[id];
data[key] = data[key] || {};
Object.keys(item).forEach(function(property) {
data[key][property] = item[property];
});
}
});
var result = Object.values(data);
console.log(result);
var arr1 = [{'_id': '1','man': 20}, {'_id': '2','man': 15}];
var arr2 = [{'_id': '1','woman': 13}, {'_id': '2','woman': 18}];
var arr3 = [{'_id': '1','animal': 2}, {'_id': '2','animal': 8}];
var merged = Object.create(null);
arr1.concat(arr2, arr3).forEach(function (obj) {
merged[obj._id] = Object.assign(merged[obj._id] || {}, obj);
});
console.log(merged);
// Если нужен именно массив
console.log(Object.values(merged));
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
если поменять содержимое scriptjs, и запустить комманду webpack-dev-server модуль тоже билдится с новым кодом
для старта react-приложения использую стандартный create-react-app от фейсбука
Авторизация (а тут именно она) проходит, все необходимые данные получаю, но проблема в том, дабы каждый раз не логинится заново, что не получаю...
Почему при скролле вниз песик не двигается(он должен переместится с право на лево)