Показать сообщение отдельно
  #1 (permalink)  
Старый 18.04.2021, 18:50
Аспирант
Отправить личное сообщение для dc65k Посмотреть профиль Найти все сообщения от dc65k
 
Регистрация: 19.05.2020
Сообщений: 46

Как оптимизировать преобразование данных в javascript?
Все привет.
У меня есть исходный массив:
const array = [
    {name: 'prop1', title: 'title1'},
    {name: 'prop2', title: 'title2'},
    {name: 'prop3', title: 'title3'},
    {name: 'prop1', title: 'title4'},
    {name: 'prop1', title: 'title5'},
]

Результат, который необходимо получить:
[
    {
        prop1: [
            {name: "prop1", title: "title1"},
            {name: "prop1", title: "title4"},
            {name: "prop1", title: "title5"}
        ]
    },
    {
        prop2: [
            {name: "prop2", title: "title2"}
        ],
    },
    {
        prop3: [
            {name: "prop3", title: "title3"}
        ]
    }
]

Моё решение:
function f(array) {
    const object = array.reduce((accumulator, currentValue) => {
        if (!accumulator[currentValue.name]) {
            accumulator[currentValue.name] = [];
        }

        accumulator[currentValue.name].push(currentValue);

        return accumulator;
    }, {});
    console.log('object', object);

    return Object.keys(object).reduce((accumulator, currentValue) => {
        accumulator.push({
            [currentValue]: object[currentValue]
        });

        return accumulator;
    }, []);
}

Подскажите, как оптимизировать данное решение? Пока, что, кажется, что можно сделать это преобразование, используя один цикл.

Последний раз редактировалось dc65k, 18.04.2021 в 18:54.
Ответить с цитированием