从另一个 2D 数组的元素中过滤 2D 数组

2023-12-05

我有两组数字元素存储为二维数组。使用以下方法从列中获取值.getValues()。一个是完整列表,另一个是部分列表。我想要一个返回完整列表减去部分列表的函数。

  • The partialListArr可能包含重复项。这fullListArr做 不是。
  • 我需要输出也是一个二维列表,因为它们将用于.setValues().
  • 值都是数字。

这是我尝试过的。

function myFunction() {
  var ss = SpreadsheetApp.getActive();
  var partialListArr = ss.getSheetByName('sheet 2').getRange(1,1,357,1).getValues();
  var fullListArr = ss.getSheetByName('sheet 1').getRange(1,1,942,1).getValues();

  var arr = fullListArr.filter(function(item){
    return partialListArr.indexOf(item.id) === -1;
  }); 

  Logger.log(arr.length)
  Logger.log(arr)
}

这将返回完整列表。

我也尝试过这个:

function myFunction2(){
  var ss = SpreadsheetApp.getActive();
  var partialListArr = ss.getSheetByName('sheet 2').getRange(1,1,357,1).getValues();
  var fullListArr = ss.getSheetByName('sheet 1').getRange(1,1,942,1).getValues();

  var arr = fullListArr.map(function(e){return e[0];})
    .filter(function(e,i,a){return (a.indexOf(e)==i && partialListArr.indexOf(e) ==-1); })  

  Logger.log(arr.length)
  Logger.log(arr)
} 

它只会返回部分结果。如果fullListArr有 943 和partialListArr有 288 个唯一值,我应该有 655 个值arr但我得到 895 并且它没有将其作为 2D 数组返回。

这里有一个带有数据集的工作表这两者都包括在内。

尝试:首先,如果使用第一个函数,我需要展平。

  var ss = SpreadsheetApp.getActive();
  var partialListArr = ss.getSheetByName('sheet 2').getRange(1,1,357,1).getValues();
  var fullListArr = ss.getSheetByName('sheet 1').getRange(1,1,942,1).getValues();

  var flatPartialListArr = [].concat.apply([], partialListArr);
  var flatFullListArr = [].concat.apply([], fullListArr);

  var arr = flatFullListArr.filter(function(item){
    return flatPartialListArr.indexOf(item) === -1;
  }); 

  Logger.log(arr.length)
  Logger.log(arr)

这给了我正确的号码arr。下一步是再次使其成为二维数组,以便我将其插入.setValues。这是具有完整解决方案的函数。

function myFunction() {
  var ss = SpreadsheetApp.getActive();
  var partialListArr = ss.getSheetByName('sheet 2').getRange(1,1,357,1).getValues();
  var fullListArr = ss.getSheetByName('sheet 1').getRange(1,1,942,1).getValues();

  var flatPartialListArr = [].concat.apply([], partialListArr);
  var flatFullListArr = [].concat.apply([], fullListArr);

  var flatArr = flatFullListArr.filter(function(item){
    return flatPartialListArr.indexOf(item) === -1;
  }); 

  //Convert to 2D again for input into .setValues
  var newArr = [];
  while(flatArr.length) newArr.push(flatArr.splice(0,1));

  Logger.log(newArr.length)
  Logger.log(newArr)

  return newArr;
}

谢谢阿克里昂!


看来你有这样的事情:

var full = [[1],[2],[3],[4],[5]]
var partial = [[3],[4]]

var result = full.filter(x => !partial.find(p => p[0] === x[0]))
console.log(result)

这将按照您想要的方式进行过滤。简而言之,您的过滤器不起作用,因为您没有考虑返回的结果,即 [[]、[]、[]] 或数组数组。

因此,根据您的情况尝试以下操作:

var arr = fullListArr.filter(item => !partialListArr.find(p ==> p[0] === item[0]);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从另一个 2D 数组的元素中过滤 2D 数组 的相关文章

随机推荐

  • 在 PHP 中,当向数据库提交字符串时,我应该使用 htmlspecialchars() 处理非法字符还是使用正则表达式?

    我正在开发一个表单 用户可以在要提交给数据库的字符串中使用非法 特殊字符 我想转义 否定字符串中的这些字符并一直在使用htmlspecialchars 但是 有更好 更快的方法吗 数据库中没有 非法 字符 不能存储某些字符的数据库是无稽之谈
  • Android Studio 项目的 .gitignore 中应该包含哪些内容?

    我的文件中应该包含哪些文件 gitignore对于 Android Studio 项目 我见过几个例子 全部包括 iml但 IntelliJ 文档说 iml必须包含在您的源代码管理中 更新至Android Studio 3 0请在评论中分享
  • 如何得到拓扑排序的所有解

    大家好我正在尝试解决这个问题我意识到它想要获得拓扑排序问题的所有解决方案 我知道如何只获得一种可能的解决方案 这是我的代码http ideone com IiQxiu static ArrayList
  • 在没有互联网访问的情况下安装 pythonnet

    我正在尝试在无法访问互联网的计算机上安装 pythonnet 在连接的机器上 我从 Github 下载了 pythonnet master zip 从 pypi 下载了 pythonnet 2 4 0 tar gz 当我尝试时pip ins
  • 防止 Visual Studio Code 中的自动完成

    我正在使用新的视觉工作室代码 In a SQL file any time you type case it automatically adds end as if you were building a case block Even
  • 向 django 添加自定义语言

    我正在将我的网站翻译成欧盟的 24 种语言 其中包括 Malti 语言 该语言未在 django 默认支持的语言中列出 我想知道是否有一种方法可以向 django 添加自定义语言 以便它可以与本机 i18n url 函数一起使用 Thank
  • 在 IE 中 contenteditable div 的输入框中插入文本

    我正在尝试在输入框中插入文本contenteditable分区当我点击输入框时 光标不出现 双击输入框后可以插入文本 这个问题出现在IE中 div div
  • 图层中的 Alpha 检测在模拟器上正常,而不是在 iPhone 上

    首先 检查一下这个非常方便的扩展CALayer来自其他地方的SO 它可以帮助您确定图层内容中的点是否已分配CG图像参考是否透明 注意 不能保证图层的contents具有代表性或回应 就好像它是一个CG图像参考 当然 这可能会对更广泛地使用上
  • 如果函数声明时没有使用“const”关键字,函数调用签名会出错

    我是 TypeScript 新手 正在学习中呼叫签名 如果我将函数存储为let or const关键词 像这样 呼叫签名 type Foo desc string arg string void 如果我创建一个函数并使用它存储它let or
  • 玩框架路由麻烦(400错误请求)

    我在向 play 框架发送 POST 时遇到问题 这甚至可能与 Play 相关不如与 HTTP 相关 ajax type POST url http localhost 9000 start data myJson JSON stringi
  • Ajax 请求在多次点击时附加

    如果用户填写了一些无效数据 则会触发 ajax 请求并显示错误消息 现在 当用户再次更正数据 或再次输入无效数据时 会触发 2 个请求 下一次会触发 3 个请求 并且会继续累加 这可能是因为 parsley js 库的原因 如果我删除欧芹代
  • 从直方图中获取值或从迹线中获取值

    在情节中 我可以创建一个直方图 例如在此示例中 文档中的代码 import plotly express as px df px data tips fig px histogram df x total bill fig show whi
  • Close 从未被明确调用过

    我有一个来自 sqlite 数据库的列表视图 我在几个不同的点调用 fillData 来更新列表视图 private void fillData mDbHelper open Cursor c mDbHelper fetchAllNotes
  • centos中imagemagick安装问题

    我正在尝试通过以下网址在我的服务器 centos 7 1 最低 上安装 imagemagick imagemagick安装步骤 在步骤 1 中出现此错误 Loaded plugins fastestmirror Loading mirror
  • 休眠正则表达式

    我正在尝试构建一个可以通过 HQL 正则表达式关键字进行搜索的 API 编辑 在 HQL 中执行正则表达式搜索的最佳方法是使用条件 Restrictions like 或 Restrictions ilike public static L
  • Android:在 OnItemClick 后替换 GridView 数组中的图像

    我有一个网格视图 大致如下所示 每个图像最终都会有所不同 当用户单击数组中的任何图像时 我希望该图像更改为 如果他们再次点击 它会变成这样 然后再次单击将恢复为 到目前为止 这是我的代码 只是使用 Imageadapter 创建一个 Gri
  • PHP:在 XML 中搜索字符串

    我尝试下面的搜索代码 但它只显示第一个子节点 我的代码中缺少什么吗 目录 xml
  • 使用 WCF 数据服务进行分页

    我的问题是关于如何使用 WCF 数据服务处理分页 我想要使 用它的方式是执行查询 传递页面大小和当前页面 并返回该查询的结果以及分页信息 例如总页数 当前页码和页面大小 客户端 这是另一个将结果转换为 JSON 供使用该结果的移动应用程序使
  • 连接向量中的相邻字符串

    Given qz lt quantile c 1 2 3 4 5 6 7 8 9 10 c 0 0 0 2 0 4 0 6 0 8 1 0 我想从分位数创建一个标签向量 目前 我这样做 zlab lt c paste paste sprin
  • 从另一个 2D 数组的元素中过滤 2D 数组

    我有两组数字元素存储为二维数组 使用以下方法从列中获取值 getValues 一个是完整列表 另一个是部分列表 我想要一个返回完整列表减去部分列表的函数 The partialListArr可能包含重复项 这fullListArr做 不是