在2D数组上构造并进行加法运算

时间:2018-09-17 07:57:24

标签: arrays multidimensional-array google-apps-script

我已经开始创建一个Web应用程序,以显示一个8x10的网格(或表格),每个单元格总计。所得的总和可能看起来像这样:

enter image description here

我将列和行存储在电子表格中,需要从8个能力和10个目标的潜力中构建2D阵列。例如,下面的数据将导致单元格[1,2]中的“ 1”和单元格[1,3]中的“ 2”(因为[1,3]显示在第一行和第二行中)。 / p>

enter image description here

由于不得不将电子表格字符串转换为数组以进行遍历,因此我所拥有的代码似乎实在太大。有没有更好/合适的方法?而且我无法构造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数组的方式检索能力和目标的任何建议?以及如何添加矩阵中的现有值?

0 个答案:

没有答案