我正在创建一个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)数组。
答案 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);