javascript - 从对象数组动态构建二维数组

标签 javascript arrays google-apps-script google-sheets

我正在 Google 脚本中使用以下函数

function writeToSheet(sheet, data, dataName, dataPts) {
  var rows = [];

  Logger.log(dataPts);
  for (var z = 0; z < data.length; z++) {
    var subRow = [];
    for (var q = 0; q < dataPts.length; q++) {
      subRow.push(dataName[z][dataPts[q]])
    }
    rows.push(subRow);
    subRow = [];
  }
  Logger.log(rows);
  dataRange = sheet.getRange(sheet.getLastRow()+1, 1, rows.length, rows[0].length);
  dataRange.setValues(rows);
}

我向函数传递了一个要写入的工作表,数据是一个对象数组,dataName 是我用来尝试从原始数组中提取数据的 dataName,dataPts 是我要写入的属性名称的数组。想要从原始数组中的每个对象中提取并作为数组嵌套在完成的数组中 -

无论我如何尝试完成这项工作,我最终都会得到字符串的数组构建,如果将其硬编码到函数中,它将准确地给出我想要的内容。但是,我无法弄清楚如何动态地执行此操作,以便它适用于我提供的任何数据。

有人有什么想法吗?我考虑过尝试过滤掉原始数组中每个对象的属性,然后以某种方式将剩余键中的值转换为每个对象的数组,但我不知道如何执行此操作或是否可能。

感谢任何人可能提出的任何建议:)

最佳答案

所以我设法让它工作。

function writeToSheet(sheet, data, dataPts) {
  var rows = [];
  var data = data;

  Logger.log(dataPts);
  for (var z = 0; z < data.length; z++) {
    var subRow = [];
    for (var q = 0; q < dataPts.length; q++) {
      subRow.push(data[z][dataPts[q]])
    }
    rows.push(subRow);
    subRow = [];
  }
  Logger.log(rows);
  dataRange = sheet.getRange(sheet.getLastRow()+1, 1, rows.length, rows[0].length);
  dataRange.setValues(rows);
}

我意识到 dataName 变量是不必要的,导致我的函数将此行视为字符串,而不是从嵌套对象中提取相关值:

subRow.push(data[z][dataPts[q]])

关于javascript - 从对象数组动态构建二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59233693/

相关文章:

javascript - 如何知道脚本中是否添加了 Bootstrap 3

javascript - Bootstrap href,指图片URL,不做重定向

php - 基于两列对多维数组中的数据进行分组

java - 有什么方法可以将数组复制到元素数量较少的同一个数组

validation - 更改数据验证源值不会使用原始值更新单元格

google-api - 谷歌脚本 API : How to apply an onEdit function to every spreadsheet?

google-apps-script - 在工作表之间重用 Google Apps 脚本代码(公司内部)

javascript - 如果二进制数据是 "4 byte single format",这意味着什么?如何在 JavaScript 中读取它?

javascript - scrollIntoView 在 Chrome 上不起作用,但在 Firefox 上完全正常

Java,在数组上插入对象的方法,返回 boolean 值