reduce - не получается написать скрипт
Задача для меня сложная - потому что я не до конца понял тонкости работы .reduce() У меня есть массив не правильный и не равномерный. Мне его нужно перебрать и положить на лист в таблицу. Далее положу код с каментами.
Вот исходный массив:
[[1.0,"ПРОЕКТ 1"], [2.0,"Проект 2", [6000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [Аванс НАЛ, , , , , , , , , , , , , , , , , , , , , , , , , ], [2022.11.18, , , , , , , , , , , , , , , , , , , , , , , , , ]],[3.0, "Проект Север"), [15000.0, 87000.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [Аванс НАЛ, Аванс НАЛ, , , , , , , , , , , , , , , , , , , , , , , , ], [2022.11.11, 2022.11.18, , , , , , , , , , , , , , , , , , , , , , , , ]], [4.0, "Проект ЗЗ", [6266.0, 1800.0, 6000.0, 3600.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [Аванс СЗ, Служебка СЗ, Аванс СЗ, Служебка СЗ, , , , , , , , , , , , , , , , , , , , , , ], [2022.11.11, 2022.11.11, 2022.11.18, 2022.11.18, , , , , , , , , , , , , , , , , , , , , , ]]]
А вот я вручную его разбираю и получаю то, что мне нужно:
function probaPera() {
let shapka1 = ["№","Проект", "2022.11.11", "2022.11.11", "2022.11.11", "2022.11.18", "2022.11.18", "2022.11.18"];
let shapka2 = [,, "Аванс НАЛ", "Аванс СЗ", "Служебка СЗ", "Аванс НАЛ", "Аванс СЗ", "Служебка СЗ"];
let rangeLi = [[1.0, "ПРОЕКТ 1",,,,,,,], [2.0, "Проект 2",,,,6000.0,,,],[3.0, "Проект Север", 15000.0, , , 87000.0, , ,], [4.0, "Проект ЗЗ", , 6266.0, 1800.0, , 6000.0, 3600.0]];
rangeLi.unshift(shapka2);
rangeLi.unshift(shapka1);
Logger.log(rangeLi);
davayZapolnim(rangeLi);
}
Необходимо вывести из исходго массива [0] и [1] значения. А вот по [2],[3],[4] собрать 2-х уровневую шапку и правильно расставить значения. [2] - Это сумма. Она кладется в строку ее проекта в основной таблице. [3] - статья расхода и [4] - дата операции. Из них формируется шапка. Считаем максимальное количество разных пар в основном массиве. Потом ставим количество одинаковых дат в первую строку шапки и под каждой датой ее операцию. А суммы раскладываем в основную таблицу согласно пары - дата+статья.