我有两个数组 A = [1,5,9,12,14],B = [16,4,8,12] 两个阵列都有不同的长度。我想将数组A与B进行比较。如果数组A的值在B中可用,则不要做任何其他事情将其添加到工作表中。 下面是我的相同代码,但我没有获得所需的输出。 任何人都可以帮助我吗?
Capybara.register_driver :chrome do |app|
args = ["--disable-notifications"]
Capybara::Selenium::Driver.new(app, {:browser => :chrome, :args => args})
end
答案 0 :(得分:1)
Sheet.appendRow() method只接受mono dimensionnal数组,因为它只在工作表后添加一行。您必须浏览列表才能附加数据。如文档所述:
在电子表格中添加一行。这个操作是原子的;它 防止用户请求最后一行的问题,然后 写入该行,并在其间发生干扰突变 获取最后一行并写入。
以下是代码示例:
编辑: 正如@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]]);
}
}
答案 1 :(得分:0)
这是更快的版本,只是为了好玩:p 大阵列(超过30k元素)的性能差异很严重。
function compareArrays()
{
var obj = {};
var result = [];
var A = [1,5,9,12,14];
var B = [16,4,8,12];
for (var i = 0; i < A.length; ++i)
{
obj[A[i]] = true;
}
for (var i = 0; i < B.length; ++i)
{
if (obj[B[i]] == undefined)
{
result.push([B[i]]);
}
}
SpreadsheetApp.openById("id").getRange("A1:A" + result.length).setValues(result);
}