将循环转为箭头函数 Javascript

Turn loop in to arrow function Javascript

我有一个简单的循环我想变成箭头函数

当 B 列或 C 列与 searchArray 中的数据匹配时,该函数从 mainArray 中删除所有行

removeROW_LOOP() 有效,但 removeROW_ARROW() 无效

当 运行 removeROW_ARROW() Exception: The number of columns in the data does not match the number of columns in the range. The data has 14 but the range has 21.

时出现错误

感谢您对此的任何帮助

我的数据看起来像 主数组

搜索数组

结果

循环(有效)

function removeROW_LOOP() {
  var ss   = SpreadsheetApp.getActiveSpreadsheet();
  const searchArray = ss.getSheetByName('Helper_(ignore)').getDataRange().getDisplayValues().flat();
  const mainArray = ss.getSheetByName('Connections').getDataRange().getDisplayValues(); 
  let result = [];

  for (var i = 0; i <= searchArray.length-1; i++) {
     result = removeROW(mainArray, searchArray[i]);
  }

  const sht = ss.getSheetByName('AAA');
  sht.clear()  
  sht.getRange(1,1, result.length, result[0].length).setValues(result);
}

我对箭头函数的尝试(没有用)

function removeROW_ARROW() {
  var ss   = SpreadsheetApp.getActiveSpreadsheet();
  const searchArray = ss.getSheetByName('Helper_(ignore)').getDataRange().getDisplayValues().flat();
  const mainArray = ss.getSheetByName('Connections').getDataRange().getDisplayValues(); 

  const result = searchArray.map(s => removeROW(mainArray, s));

  const sht = ss.getSheetByName('AAA');
  sht.clear()  
  sht.getRange(1,1, result.length, result[0].length).setValues(result);
}

function removeROW(array, item) {
  array = array.filter(a => a[1]!=item && a[2]!=item);
  return array
}

我认为问题不在于函数与箭头函数。您的重构实际上显着改变了行为。

removeROW_LOOP() 将在每次使用新过滤的数组进行迭代时重置 result。但是,在removeROW_ARROW()中,result会是一个数组的数组。具体来说,result 中的每一项都是 mainArray 的过滤版本,只有一个 searchArray 条目被过滤出来了。

我想你想要这样的东西:

function removeUPDATED() {
  // ...

  const result = mainArray.filter(x => !searchArray.includes(x[0]) && !searchArray.includes(x[1]));

  // ...
}

我可能在那里包含了一个错误,但我认为它展示了您想要的方法。