Показать сообщение отдельно
  #8 (permalink)  
Старый 09.03.2021, 13:01
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

ещё вариант
function toObj(arr) {
    const str = arr.join('.');
    const obj = {};
    let len = -1;
    for (let i = 0; i < arr.length; ++i) {
        len += arr[i].length + 1;
        obj['col_' + (i + 1)] = str.substr(0, len);
    }
    return obj;
}

alert(JSON.stringify(toObj(['1', '2', '3', '4']), '', 4));


по идее, должно быть более экономным по памяти: если предположить, что join реализовано оптимально, то сразу выделяется подходящего размера буфер под строку, который потом переиспользуется в строках, созданных через substr, т.е. сложность выглядит быть линейная.
Ответить с цитированием