javascript - 根据 Google Apps 脚本中的另一个数组过滤数组

标签 javascript arrays google-apps-script google-sheets

我对 JavaScript 还很陌生,可能需要一些帮助来解决我在处理 Google Apps 脚本时遇到的问题。

我打算做的是基于数组过滤我的数据,该数组是我从特定工作表中的特定单元格中获取的,其中包含我不想保留在数据中的字符串元素。换句话说,包含这些关键字的行应从我的工作表中删除。

到目前为止,我已经成功地在过滤器函数中使用单个字符串元素来完成此操作。

// elements to filter out.
var keys = [['a','b','c']];

// example data.
var data = [['a',1,2],
            ['c',4,3],
            ['d',3,4]];

// my approach for a single element which works.
var filterText = "a";
var newData1 = data.filter(function(item) {
  return item[0] !== filterText;
});
console.log(newData1); // output: [ [ 'c', 4, 3 ], [ 'd', 3, 4 ] ]

但是,如果我尝试将此逻辑扩展到使用数组来过滤数据的情况,我就会遇到麻烦。我编写了下面的代码,它可以正确检查我的数据,但不会返回预期的结果。我知道我在这里错过了代码的关键部分,但无法弄清楚它是哪一个。我多次修改代码,但都被卡住了。

for(var n=0; n<keys[0].length; n++) {
  // console.log(keys[0][n]);
  var newData2 = data.filter(function(item) {
    // console.log(item[0] === keys[0][n]);
     return item[0] === keys[0][n];
  })
};
console.log(newData2); // output: [ [ 'c', 4, 3 ] ]

希望你们能指出我正确的方向,并帮助我理解我在这里犯的错误。

谢谢!

最佳答案

我会用所有不需要的键创建一个对象,然后使用它们来过滤您的数据数组。

const ObjectOfKeys = keys.reduce((acc,rec)=> {
                        let nextAcc = acc;
                        nextAcc[rec] = true;
                        return nextAcc;
                        },{}};

const filteredData = data.filter(rec => !ObjectKeys[rec[0]])

另一种方法是,如果您的键是唯一的,您可以跳过创建对象。

const filterData = data.filter(rec => !keys.includes(rec)) 笔记。例如,如果您的 key 是“apple”并且 data[0] 是“a”,则这将不起作用,因此第一种方法将确保此类条件不会导致代码失败。

关于javascript - 根据 Google Apps 脚本中的另一个数组过滤数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61689567/

相关文章:

javascript - 如何在javascript中不使用.join()将数组转换为没有逗号并用空格分隔的字符串?

google-apps-script - 谷歌脚本 - 将日期转换为纪元时间

javascript - 防止时事通讯弹出窗口再次显示在不同页面上

javascript - 外部 css、$.ajax、firefox、jquery。

javascript - this.state.something 发生变异并引发问题

c - 结构数组末尾的空大括号 '{ }' 需要什么?

javascript - 将一系列 JSON 数据从 php 回显到 JavaScript,

javascript - 获取范围内的 x 单元格谷歌表格应用程序脚本

google-apps-script - 使用 Google Apps 脚本仅从 Google 电子表格中选择特定列中的值或公式不为空的行

javascript - UseState 总是显示以前的值