gpt4 book ai didi

javascript - 在 Google Apps 脚本中查找两个数组(缺失值)之间的差异

转载 作者:行者123 更新时间:2023-11-30 14:05:46 24 4
gpt4 key购买 nike

尝试找到一种适用于 Google Apps 脚本的方法,以比较两个数组并找到第二个数组中缺少的值。

我尝试了多种方法,但找不到一种适用于 GAS 的方法。目前正在尝试使用 for() 循环和 indexOf():

var ss = SpreadsheetApp.getActiveSpreadsheet();  
var sheet = ss.setActiveSheet(ss.getSheetByName('test'));

function TEST(){
var lastRow = sheet.getLastRow();
var orders = sheet.getRange(2,1,lastRow,1).getValues(); //[a,b,c,d]
var products = sheet.getRange(2, 2,lastRow,1).getValues(); //[a, b]
var missing = [];
for ( var i = 0 ; i < Object.keys(orders).length; i++){
if(products.indexOf(orders[i])<0){
missing.push(orders[i]);};
};
Logger.log(missing); //expect [c, d]
}

源表有两列要比较,第三列应该存储新的“缺失”数组。

orders  products    missing
a a c
b b d
c
d

我尝试了其他几篇文章中的方法,但所有方法都使用了 Google Apps 脚本中不可用的函数。

最佳答案

查找丢失的订单:

function findMissingOrders() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Sheet110');
var orderA=sh.getRange(2,1,getColumnHeight(1)-1,1).getValues().map(function(r){return r[0];});
var prodA=sh.getRange(2,2,getColumnHeight(2)-1,1).getValues().map(function(r){return r[0];});
var missA=[];
for(var i=0;i<orderA.length;i++) {
var order=orderA[i];
if(prodA.indexOf(orderA[i])==-1) {
missA.push([orderA[i]]);
}
}
if(missA.length>0) {
sh.getRange(2,3,missA.length,1).setValues(missA);
}
}

这是 getColumnHeight() 函数:

function getColumnHeight(col,sh,ss){
var ss=ss || SpreadsheetApp.getActive();
var sh=sh || ss.getActiveSheet();
var col=col || sh.getActiveCell().getColumn();
var rg=sh.getRange(1,col,sh.getLastRow(),1);
var vA=rg.getValues();
while(vA[vA.length-1][0].length==0){
vA.splice(vA.length-1,1);
}
return vA.length;
}

之前的电子表格:

enter image description here

之后的电子表格:

enter image description here

关于javascript - 在 Google Apps 脚本中查找两个数组(缺失值)之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55424192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com