Показать сообщение отдельно
  #7 (permalink)  
Старый 24.10.2023, 15:08
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Сообщение от ureech
И что?
Признаться, я даже не знаю, как ответить на ваш великолепный вопрос.

Сообщение от ureech
Я вставляю данные из массива в элементы,собранные по блокам(слотам)
Ну, т.е. вы данные пхаете в html, только для того, чтобы их снова из них считать?
Действительно «и что».

Попробуйте так:
(savedJson => {
    let data = null;
    try {
        data = savedJson ? JSON.parse(savedJson) : null;
    } catch (e) {
        console.error(e);
    }

    if (!data) {
        return;
    }

    const slotToMaxSumMap = {};
    data.forEach((item, i) => {
        const index = {
            index: i,
            sum: +(item.summ || 0),
            slot: item.slot,

            $item: item,
        };

        if (
            !(index.slot in slotToMaxSumMap) ||
            slotToMaxSumMap[index.slot].sum <= index.sum
        ) {
            slotToMaxSumMap[index.slot] = index;
        }
    });

    const dataOnlyWithMaxSum = Object.values(slotToMaxSumMap).map(item => item.$item);

    dataOnlyWithMaxSum.forEach(item => {
        const node = document.querySelector(`[data-slot="${item.slot}"].slot:not(.less-today)`);
        if (!node) {
            return;
        }

        node.innerHTML = item.summ;
    });

})(localStorage.getItem('colorRow'));


Крутой сервис: https://beautifier.io/

Последний раз редактировалось Nexus, 24.10.2023 в 15:11.
Ответить с цитированием