我已经开始创建一个Web应用程序,以显示一个8x10的网格(或表格),每个单元格总计。所得的总和可能看起来像这样:
我将列和行存储在电子表格中,需要从8个能力和10个目标的潜力中构建2D阵列。例如,下面的数据将导致单元格[1,2]中的“ 1”和单元格[1,3]中的“ 2”(因为[1,3]显示在第一行和第二行中)。 / p>
由于不得不将电子表格字符串转换为数组以进行遍历,因此我所拥有的代码似乎实在太大。有没有更好/合适的方法?而且我无法构造2D数组来总结重叠的数字。我的眼睛模糊了矩阵对象。 任何建议都将受到欢迎!
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数组的方式检索能力和目标的任何建议?以及如何添加矩阵中的现有值?