Я начал создавать веб-приложение для отображения сетки (или таблицы) 8х10 с итогом в каждой ячейке. Результирующие суммы могут выглядеть примерно так:
У меня есть столбцы и строки, хранящиеся в электронной таблице, и мне нужно построить этот двумерный массив из потенциала из 8 компетенций и 10 целей. Например, приведенные ниже данные приведут к появлению «1» в ячейке [1,2] и «2» в ячейке [1,3] (потому что [1,3] отображается в первой и второй строках).
Код, который у меня есть, кажется очень громоздким из-за необходимости преобразования строк электронной таблицы в массив для циклического прохождения. Есть ли лучший / правильный путь? И я не могу построить 2D-массив для суммирования перекрывающихся чисел. Мои глаза становятся размытыми, когда я собираю объект matrix . Любые предложения приветствуются!
function retrieveLearnerActivity(formObject) {
var email = "info@arcacademy.ca";//formObject.learner;
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
var lastRow = sheet.getLastRow();
var cols = sheet.getLastColumn();
var inquiries = sheet.getRange(2, 1, lastRow, cols).getValues(); // 1st is
header row
var html = "";
var matrix = [[]];
var row = [];
// each row in values is a unique inquiry
for (var i in inquiries) {
// drop down list email MATCHES spreadsheet value
if (inquiries[i][3] == email) {
// count a 1 for each competency and objective overlap
var comps = [inquiries[i][1]];
var objs = [inquiries[i][2]];
// split string value into an array
var cList = []; // competency list
var oList = []; // objectives list
var listValue = "";
var val = inquiries[i][1];//sheet.getRange(searchResult+2, 2).getValue();
listValue = new String(val);
var cList = listValue.split(",");
val = inquiries[i][2];//sheet.getRange(searchResult+2, 3).getValue();
listValue = new String(val);
oList = listValue.split(",");
// construct 2D array
for (var c=0; c<cList.length; c++) {
for (var o=0; o<oList.length; o++) {
matrix[c] = matrix[c] || [];
matrix[cList[c],oList[o]] = 1;//Number(matrix[cList[c],oList[o]]) + 1;
Logger.log("c="+c+":o="+o+"::matrix="+matrix[cList[c],oList[o]] + "::clist=" +cList[c] + ":olist=" + oList[o]);
}
}
}
}
Logger.log(matrix);
return matrix;
}
Я чувствую, что метод, который я делаю, слишком сложен, поэтому, возможно, мне трудно разобраться в кодировании. Любые предложения по извлечению компетенций и целей таким образом, чтобы можно было легко построить 2D-массив? И как мне добавить к существующим значениям в матрица ?