У меня есть масив с обьектами:
let arr = [
{ name: 'Jahn',
email: 'john@test.com'
},
{ name: 'Bob',
email: 'bob@test.com'
}
]
Мне нужно добавлять обьекты. Как мне добавлять только уникальные обьекты. Например как из такого масива добавить только уникальные обьекты ?
let arr2 = [
{ name: 'Max',
email: 'max@test.com'
},
{ name: 'Bob',
email: 'bob@test.com'
},
{ name: 'Jahn',
email: 'john@test.com'
},
{ name: 'Julie',
email: 'julie@test.com'
}
]
Должен получиться такой масив в результате:
let result = [
{ name: 'Jahn',
email: 'john@test.com'
},
{ name: 'Bob',
email: 'bob@test.com'
},
{ name: 'Max',
email: 'max@test.com'
},
{ name: 'Julie',
email: 'julie@test.com'
}
]
Уникальное свойство у обьекта это email
Ну как-то так, получился довольно длинный пример, все можно было и записать одной функцией, но я разделил на целых 3. Моей целью было показать алгоритм а красиво оформить думаю сами сможете.
let arr1 = [
{
name: 'Jahn',
email: 'john@test.com'
},
{ name: 'Bob',
email: 'bob@test.com'
}
];
let arr2 = [
{
name: 'Max',
email: 'max@test.com'
},
{
name: 'Bob',
email: 'bob@test.com'
},
{
name: 'Jahn',
email: 'john@test.com'
},
{
name: 'Julie',
email: 'julie@test.com'
}
];
function array2object(array, field){
let res = {};
for(let i in array)
if (!(i in res))
res[array[i][field]] = array[i];
return res;
}
function object2array(object)
{
let res = [];
for(let i in object)
res.push(object[i]);
return res;
}
function union(arr1, arr2)
{
for (let i in arr2)
if (!(i in arr1))
arr1[i] = arr2[i];
return arr1;
}
// первый параметр это сам массив а второй уникальное поле
// которое будет ключом
let obj1 = array2object(arr1, 'email');
let obj2 = array2object(arr2, 'email');
let result = object2array(union(obj1, obj2));
console.log(result);
Вот еще один вариант.
const arr = [{
name: 'Jahn',
email: 'john@test.com'
},
{
name: 'Bob',
email: 'bob@test.com'
}
]
const arr2 = [{
name: 'Max',
email: 'max@test.com'
},
{
name: 'Bob',
email: 'bob@test.com'
},
{
name: 'Jahn',
email: 'john@test.com'
},
{
name: 'Julie',
email: 'julie@test.com'
}
]
function addUnique(arrTarget, arrSource, field) {
const res = arrTarget.splice();
arrSource.forEach(f => {
if (!res.some(s => s[field] === f[field]))
res.push(f);
});
return res;
}
const res = addUnique(arr, arr2, 'email');
console.log(res);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
При монтировании компонента устанавливаю обработчик изменения сессионного хранилища
Внедряю на сайт PWAПри запуске Service Worker возникает следующая ошибка:
Пытаюсь вызвать модальное окно с помощью ajax запроса но есть проблемаОкно по нажатию на кнопку вызывается только со 2 раза и после не закрывается...