Два массива и объекты внутри них

Есть два массива

let store = {
   users: [
     {name: 'Tol', age: 13},
     {name: 'Tol2', age: 15},
  ]
}

let newData = {
   users: [
     {name: 'Tol', age: 13},
     {name: 'Tol3', age: 15},
     {name: 'Tol4', age: 15},
   ]
}

Есть функция, которая добавляет users из массива newData в массив users объекта Store

function addUser (newData.users) {
   store.users = store.users.concat(newData.users);
}

Но мне надо в этой функции еще проверять, а не существует ли уже в массиве store.users такого юзера и если не существует, то только тогда проводить concat(), иначе пропускать добавление.


Ответы (2 шт):

Автор решения: Pavel Grishaev
function addUser( newData ){
    newData.users.forEach( newUser => {
        let has = store.users.some( user => user.name === newUser.name );
        if( !has ) store.users.push( newUser );
    });
}
→ Ссылка
Автор решения: Igor

let store = {
   users: [
     {name: 'Tol', age: 13},
     {name: 'Tol2', age: 15},
  ]
}

let newData = {
   users: [
     {name: 'Tol', age: 13},
     {name: 'Tol3', age: 15},
     {name: 'Tol4', age: 15},
   ]
}

function addUser(newUsers) {
   store.users = store.users.concat(
     newUsers.filter(nu => !store.users.find(su => su.name == nu.name))
   );
}

addUser(newData.users);

console.log(store.users.length, store.users);

→ Ссылка