alexbuki
@alexbuki
программист js

Как подменить элементы в массиве элементами из другого массива?

Есть два массива:
const arr1 = [{code: "admin_user_view"}, {code: "admin_role_view"},{code: "admin_role_full_access"}, {code: "admin_newrole_full_access"}]
const arr2 = [{code: "admin_user_view", id: 1}, {code: "admin_role_view", id: 2}]

В итоге, из двух надо получить массив, в котором будут только уникальные объекты по полю code, но при этом приоритет отдается объектам с id.
То есть, в итоге вот так:
arr3 = [{code: "admin_user_view", id: 1}, {code: "admin_role_view", id: 2},{code: "admin_role_full_access"}, {code: "admin_newrole_full_access"}]


На практике массивы намного больше. Я сделал так, но хочется как-то покрасивее.

arr1.forEach(p=>{
                    if(!arr2.some(per=>per.code == p.code)) {
                        arr2.push(p);
                    }
});
arr3 = arr2;
  • Вопрос задан
  • 54 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Object.values([ ...arr1, ...arr2 ].reduce((acc, n) => {
  acc[n.code] = n.id ? n : (acc[n.code] || n);
  return acc;
}, {}))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы