转换2D数组理解| m x n尺寸

时间:2018-01-04 06:52:30

标签: javascript arrays google-apps-script list-comprehension

我正在创建一个Google App脚本,我正在尝试创建一个表结构,其中单元格数据是行标题的值+列标题的值。

我有以下标题代表日期和时间...

var tableHeadings = ["M", "T", "W", "TH", "F", "S", "SU"]
var tableHours = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]

我希望内容等于" M0"," M1"," M2",...," TH1" ,...等所以列数为7,行数为10.

我正在研究如何做到这一点,并找到了Array Comprehensions,但我很快发现那些现在不受支持,我们不应该使用它们。

var table = [for (day of tableHeadings) [for (hour of tableHours) day + hour]];
  

仅供参考,我不知道我是否需要更换2个for-clauses。我将列表示为一周中的日期。此外,我不知道这是否适用于m x n阵列,因为Google App Script不允许使用此语法,但如果向下滚动到Array comprehensions with two arrays以查看我用作灵感的示例。

在大多数文档中,我已经能够找到如何将单数组数组理解转换为使用地图和过滤器,但我还没有找到关于如何转换双数组(m x n)数组理解的任何内容。一些文档讨论了关于双数组(m x m)数组理解,但没有讨论如何转换它们。

有没有一种简单的方法来转换双数组(m x n)数组理解?只是非常具体,解决方案需要适用于(m x n)数组。

1 个答案:

答案 0 :(得分:3)

您可以使用嵌套的Array#map调用实现此目的:

var tableHeadings = ["M", "T", "W", "TH", "F", "S", "SU"];
var tableHours = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];

var result = tableHeadings.map(function(day) {
  return tableHours.map(function(hours) {
    return day + hours;
  });
});

console.log(result);

使用ES6箭头功能,您可以拥有一个内衬:

const tableHeadings = ["M", "T", "W", "TH", "F", "S", "SU"];
const tableHours = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];

const result = tableHeadings.map((day) => tableHours.map((hours) => day + hours));

console.log(result);