【发布时间】:2019-04-12 20:52:53
【问题描述】:
我正在尝试将一个数组拆分为几个不同的数组,以便将信息粘贴到多个工作表中。我无法使用单独的数组 (sheetCheck) 动态过滤我的主数据数组 (bigArray)。如果我输入一个静态过滤器,即“02A”,过滤器就会起作用。如何修改我的过滤器以接受可变信息?
function testArray (){
var ss = SpreadsheetApp.getActiveSpreadsheet();
//Get full array of Budget Pricing Breakdown Sheet
var originalArray = ss.getRangeByName('XxTestRange').getValues();
//Delete unused columns from array. Only Leaves sheetNumber, description, qty, UM, unitCost
var newArray = originalArray.map(function(row){return[row[0],row[5],row[6],row[7],row[10]];});
//Delete unused rows that have a value of X in the sheetNumber
var bigArray = newArray.filter(function(item){return item[0] != "X";});
//Get array of Applicable Tabs
var originalSheetsArray = ss.getRangeByName('XxTestRange2').getValues();
//Remove unused column
var newSheetsArray = originalSheetsArray.map(function(row){return[row[0],row[2]];});
//Delete not applicable rows
var sheetCheckBad = newSheetsArray.filter(function(item){return item[1] != "Not Applicable"});
//Separate just appicable trades
var sheetCheck = sheetCheckBad.map(function(row){return[row[0]];});
for (var i=0; i<sheetCheck.length;i++){
var sheetNumber = sheetCheck[i];
//Logger.log(sheetNumber)
var pasteArray = bigArray.filter(function(item, sheetNumber){return item[0] == sheetNumber})
//var pasteArray = bigArray.filter(filterSheetLogic)
Logger.log(sheetNumber);
Logger.log(pasteArray);
}
}
//Pull individual Arrays based on sheet numbers
var filterSheetLogic = function(item, sheetNumber){
if (item[0] == sheetNumber){
return true;
} else {
return false;
}
}
【问题讨论】:
-
为了正确了解您的情况,您能否提供您想要的输入和输出的示例值?
-
我相信 OP 正在询问如何能够将变量 sheetnumber 作为函数参数包含在
var pasteArray = bigArray.filter(function(item, sheetNumber){return item[0] == sheetNumber})中,因为粘贴数组当前在所有迭代中都是空的。如果删除变量 sheetNumber,则该函数可以正常工作。我只用了 11 列数字。 -
这里是一个示例电子表格的链接。我正在使用数组过滤器将预算定价明细表中的数据分解为单独的数组,这些数组可以粘贴到标题为 02A、03A、...、04A 的其他表中。该工作表的完整版本从预算定价明细中复制了数百行并将它们分配到 100 多张工作表中。 link
-
@Cooper 你是绝对正确的。删除 sheetNumber 变量解决了我的问题。感谢您的帮助!
标签: javascript arrays multidimensional-array google-apps-script google-sheets