注意,这不是How to extend an existing JavaScript array with another array, without creating a new array?的副本,因为我希望有一个嵌套的数组,而不是简单地用另一个数组扩展一个数组来得到一个数组。在将此标记为重复之前,请正确阅读问题。
我循环遍历(Google)表中的行以收集值,并希望将每一行作为数组添加到数组中,这应该会产生如下所示的输出(示例如下所示):
array_main = [row1_cell1,row1_cell2,row1_cell3,row2_cell1,row2_cell2,row2_cell3,...]
我第一次尝试使用.push,它会将值相加,但不是作为数组:
accounts_last_row = 10
accounts_array = []
for (var i = 0; i < accounts_last_row; ++i) {
if ((accounts_range[i][1] == 'test') {
accounts_array.push([ [accounts_range[i][1]],[accounts_range[i][2]] ])
}
}
我知道有人问过类似的问题,但他们中的大多数只是简单地推荐使用.concat合并2个数组。我也试过了,但它没有向数组中添加任何东西:
...
if ((accounts_range[i][1] == 'test') {
accounts_array.concat( [accounts_range[i][1]],[accounts_range[i][2]] )
}
...
我遗漏了什么?提前谢谢。
发布于 2018-08-23 20:39:57
你几乎做到了,内部数组是简单的,你有太多的括号。
试着这样做:
accounts_array.push( [accounts_range[i][1],accounts_range[i][2]] );
上面的代码将用于添加行。如果要将数据作为单个列添加,则必须更改括号,如下所示:
accounts_array.push( [accounts_range[i][1]],[accounts_range[i][2]] );
发布于 2018-08-23 21:49:49
这种类型的操作可以使用Array#filter、Array#push和apply灵活地完成
const results = [];
const colIndexToTest = /** 0, 1, etc. */;
const requiredValue = /** something */;
SpreadsheetApp.getActive().getSheets().forEach(
function (sheet, sheetIndex) {
var matchedRows = sheet.getDataRange().getValues().filter(
function (row, rowIndex) {
// Return true if this is a row we want.
return row[colIndexToTest] === requiredValue;
});
if (matchedRows.length)
Array.prototype.push.apply(results, matchedRows);
});
// Use Stackdriver to view complex objects properly.
console.log({message: "matching rows from all sheets", results: results});上面的代码在所有工作表的所有行的给定列中搜索给定值,并将其收集到一个二维数组中。如果所有行的列数都相同,那么这个数组就可以直接用Range#setValues序列化。
这段代码本可以使用map而不是forEach和push.apply,但是这将为没有匹配的表索引放置空的或未定义的元素。
发布于 2018-08-23 22:47:49
我假设如果account-rangei是“测试”的,则将整行复制到accounts_array。删除第二个索引。
accounts_last_row = 10
accounts_array = []
for (var i = 0; i < accounts_last_row; ++i) {
if ((accounts_range[i][1] == 'test') {
accounts_array.push(accounts_range[i])
}
}https://stackoverflow.com/questions/51985692
复制相似问题