@aliaksandr-go

Как можно соединить 2 массива в 1 без 2 forEach?

Добрый день подскажите как соединить 2 массива в 1 по id:
[{
        "id": 3231,
        "stage": 3,
        "sort": 999
}]

Второй массив
[{
        "id": 3231,
        "status_client": 3,
        "status_date": "2024-11-22 16:18:58",
        "sort": 999
}]


Понятно что в массивах по 500+ объектов
  • Вопрос задан
  • 128 просмотров
Решения вопроса 1
Mike_Ro
@Mike_Ro Куратор тега JavaScript
Python, JS, WordPress, SEO, Bots, Adversting
Объединение на основание совпадений свойств id объектов, используя Map и reduce, при пересечение одинаковых свойств, значение свойства будет заменено на значение из массива array2 (т.к. в тз не указано условие обработки одинаковых свойств):
const array1 = [{
    'id': 3231,
    'stage': 3,
    'sort': 999,
}];

const array2 = [{
    'id': 3231,
    'status_client': 3,
    'status_date': '2024-11-22 16:18:58',
    'sort': 999,
}];

const map = new Map(array2.map((item) => [item.id, item]));

const reduced = array1.reduce((acc, item) => {
    const _item = map.get(item.id);

    _item
        ? acc.push({..._item, ...item})
        : acc.push(item);

    return acc;
}, []);

console.log(reduced);

// [
//   {
//     id: 3231,
//     status_client: 3,
//     status_date: '2024-11-22 16:18:58',
//     sort: 999,
//     stage: 3
//   }
// ]
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы