比较谷歌应用程序脚本中的列表

时间:2021-05-25 19:22:44

标签: list google-apps-script comparison

我正在尝试比较 2 个列表并在列表 1 中查找列表 2 中不存在的元素。

list1: [01-0161051, 01-0161053, 01-0161057, 01-0161058, 01-0161065, 01-0161067, 01-0161068]
list2: [01-0161051, 01-0161053, 01-0161057, 01-0161058, 01-0161065, 01-0161066]

list1 中而不是 list2 中的元素是 [01-0161067, 01-0161068]

我试过这段代码,但没有产生预期的结果:

missing = null,
i = list1.length;
while(i) {
missing = ( ~list1.indexOf(list2[--i]) ) ? missing : list1[i];
}

任何线索将不胜感激。

2 个答案:

答案 0 :(得分:2)

function findInOneNotInTwo() {
  const list1 = ['01-0161051', '01-0161053', '01-0161057', '01-0161058', '01-0161065', '01-0161067', '01-0161068'];
  const list2 = ['01-0161051', '01-0161053', '01-0161057', '01-0161058', '01-0161065', '01-0161066'];
  let in1notin2 = [];
  list1.forEach(s=>{
    if(!~list2.indexOf(s)) {
      in1notin2.push(s);
    }
  });
  Logger.log(in1notin2.join(', '));
}

Execution log
1:54:09 PM  Notice  Execution started
1:54:11 PM  Info    01-0161067, 01-0161068
1:54:10 PM  Notice  Execution completed

答案 1 :(得分:1)

var list1 = ['01-0161051', '01-0161053', '01-0161057', '01-0161058', '01-0161065', '01-0161067', '01-0161068'];
var list2 = ['01-0161051', '01-0161053', '01-0161057', '01-0161058', '01-0161065', '01-0161066'];

var missing = list1.filter(x => !list2.includes(x));

console.log(missing); // [ '01-0161067', '01-0161068' ]