我有两个数组 A = [1,5,9,12,14] 且 B = [16,4,8,12] 两个数组的长度不同。我想将数组 A 与 B 进行比较。如果数组 A 的值在 B 中可用,则不要执行任何其他操作,将其添加到工作表中。 下面是我的代码,但我没有得到所需的输出。 有人可以帮助我吗?
function updateTicketsAreNotInDeploymentDoc() {
var A = getJiraNoFromJira();
var B = getJiraNoFromDoc();
for(var i = 0; i<A.length; i++) {
var data = new Array();
for(var j=0; j<B.length; j++) {
if(A[i] == B[j]) {
Logger.log("found="+A[i]);
}
}
data.push(A[i]);
}
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName(RESULTANT_DEPLOYMENT_SHEET);
sheet.appendRow(data);
}
最佳答案
Sheet.appendRow() method只接受单维数组,因为它只在工作表后添加一行。您必须仔细检查列表才能附加数据。正如文档中所述:
Appends a row to the spreadsheet. This operation is atomic; it prevents issues where a user asks for the last row, and then writes to that row, and an intervening mutation occurs between getting the last row and writing to it.
这里是一个代码示例:
编辑:正如@charlietfl指出的那样,之前还有其他问题:每次在 A 数组上循环时都会实例化数据数组。嗯>
正在修改代码以纠正此问题。
function updateTicketsAreNotInDeploymentDoc() {
var A = getJiraNoFromJira();
var B = getJiraNoFromDoc();
var data = new Array();
for(var i = 0; i<A.length; i++) {
var Found = false;
for(var j=0; j<B.length; j++) {
if(A[i] == B[j]) {
Logger.log("found="+A[i]);
Found = true;
}
}
if(Found == false){
data.push(A[i]);
}
}
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName(RESULTANT_DEPLOYMENT_SHEET);
for(var k = 0; k<data.length; k++){
sheet.appendRow([data[k]]);
}
}
关于javascript - 比较两个数组,如果在另一个数组中找到值,则将该值设置为 True,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45143792/