Объединить объекты одного массива на основе ключа объекта

Я запутался, чтобы объединить содержимое массива из JavaScript. Пожалуйста, помогите получить лучший способ получить желаемый результат. Я также пробовал другие способы, указанные на SO.

[
    {
        "Afghanistan": 2646432,
        "categories": "2018"
    },
    {
        "Afghanistan": 6545700,
        "categories": "2019"
    },
    {
        "Afghanistan": 7475886,
        "categories": "2020"
    },
    {
        "Albania": 740232,
        "categories": "2018"
    },
    {
        "Albania": 2374785,
        "categories": "2019"
    },
    {
        "Albania": 2180850,
        "categories": "2020"
    }
]

Это был мой ожидаемый результат::

[ { "Afghanistan": 2646432, "Albania": 740232, "categories": "2018" }, { "Afghanistan": 6545700, "Albania": 2374785, "categories": "2019" }, { "Afghanistan": 7475886, "Albania": 2180850, "categories": "2020" } ]

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
64
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий
array.reduce((acc, item) => {
    const found = acc.find(obj => obj.categories === item.categories);
    if (found) {
        Object.assign(found, item);
    } else {
        acc.push(item);
    }
    return acc;
}, [])

let list=[{Afghanistan:2646432,categories:"2018"},{Afghanistan:6545700,categories:"2019"},{Afghanistan:7475886,categories:"2020"},{Albania:740232,categories:"2018"},{Albania:2374785,categories:"2019"},{Albania:2180850,categories:"2020"},{India:2029282726,categories:"2022"},{India:2029282729,categories:"2023"},{Afghanistan:2029282729,categories:"2023"}];

let result = Object.values(list.reduce((acc, cur) => (acc[cur.categories] ? acc[cur.categories] = {...acc[cur.categories], ...cur} : acc[cur.categories] = cur, acc), {}));

console.info(result);

Вы можете использовать метод уменьшить

Другие вопросы по теме