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;
  • Вопрос задан
  • 46 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Object.values([ ...arr1, ...arr2 ].reduce((acc, n) => (acc[n.code] = n.id ? n : (acc[n.code] || n), acc), {}))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
от 110 000 до 150 000 руб.
Индустрия Москва
от 200 000 до 250 000 руб.
Алгоритмика Москва
от 120 000 до 200 000 руб.
26 авг. 2019, в 01:06
2000 руб./за проект
25 авг. 2019, в 23:48
4000 руб./за проект
25 авг. 2019, в 22:35
1000 руб./за проект