如何在 AppsScript 中拼合和转置数组
How to flatten and transpose an array in AppsScript
我正在尝试在AppsScript中编写一个自定义的Google电子表格函数,该函数将获取任意维度的数组("范围")并在单个列中返回唯一值。该函数采用可选参数transpose
该参数应按行而不是列对输出进行排序。
我已经有了这个半工作,但transpose
方法仅适用于方形数组:
function GETUNIQUES(range, transpose) {
traspose = transpose || !0;
if (transpose) {
range = range.map(function(col, i) {
return range.map(function(row) {
return row[i];
});
});
}
var flat = [];
var clean = [];
for (i = 0; i < range.length; i++) {
for (j = 0; j < range[i].length; j++) {
flat.push(range[i][j]);
}
}
for (i = 0; i < flat.length; i++) {
flat[i] = String(flat[i]);
if (flat[i].length && clean.indexOf(flat[i].trim()) < 0) {
clean.push(flat[i].trim());
}
}
return clean;
}
有人可以帮助我为遵循行顺序而不截断结果的 transpose
方法提供解决方案吗?
转置不适用于Array#map()
,因为长度可能不是想要的长度。
使用Array#forEach()
转置
forEach()
方法为每个数组元素执行一次提供的函数。
var range = [[0, 1], [2, 3], [4, 5]];
range = function (array) {
var r = [];
array.forEach(function (a, i) {
a.forEach(function (b, j) {
r[j] = r[j] || [];
r[j][i] = b;
});
});
return r;
}(range);
document.write('<pre>' + JSON.stringify(range, 0, 4) + '</pre>');
使用Array#reduce()
转置
reduce()
方法对累加器和数组的每个值(从左到右)应用函数,以将其减少到单个值。
var range = [[0, 1], [2, 3], [4, 5]];
range = range.reduce(function (r, a, i) {
a.forEach(function (b, j) {
r[j] = r[j] || [];
r[j][i] = b;
});
return r;
}, []);
document.write('<pre>' + JSON.stringify(range, 0, 4) + '</pre>');
来自板材产品论坛:
=ARRAYFORMULA({array1;array2;array3})
。将多个范围合并到一个仅查看列中,然后:
=UNIQUE(ARRAYFORMULA({A2:A5; B3:B7; C10}))
或
=TRANSPOSE(UNIQUE(ARRAYFORMULA({A2:A5; B3:B7; C10})))
相关文章:
- Javascript重置数组中的对象
- 只需要重置Javascript数组的索引
- 如何从网格中删除项目时重置数组
- 转置数组时收到“回调函数不支持此操作”错误
- 在 .slice 之后重置 JSON 数组
- 如何转到 json 数组中的下一个和上一个值
- 在 JavaScript 中将数组作为内置函数参数传递
- 如何在 AppsScript 中拼合和转置数组
- 使用AngularJS重置变量和编辑数组
- HTML5 语音 API - 重置结果数组
- jQuery UI 对话框,多复选框选中.在触发对话框之前,无法保存多选的后置数组
- JavaScript - 似乎无法“重置”传递给函数的数组
- 使用 jquery 函数重置 PHP $_SESSION 数组
- 当计数器到达数组末尾时,如何重置计数器
- jQuery-不知道如何在使用.each时重置数组的最大值
- 如何转置/旋转多维数组
- 当动态值达到设定值时,如何重置数组值
- 如何重置数组对象,当它达到一定的大小
- 在视频中跳转到数组中的时间
- AngularJS重置数组的数组