热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

动态构建表达式以过滤Javascript数组

如何解决《动态构建表达式以过滤Javascript数组》经验,为你挑选了1个好方法。

我需要基于另一个数组中可变数量的项目来过滤一个数组。说我要过滤的数组看起来像这样:

var toBeFiltered = [
  {name:"A", parentId: 0},
  {name: "B", parentId: 3},
  {name: "C", parentId: 0},
  {name: "D", parentId: 1},
  ...
]

我需要过滤parentId另一个数组中所有的元素(例如:var filtering = [3,1,0],但是可以有任何长度)。如何基于filtering数组的内容动态构建过滤器表达式?在这种情况下,我将得到以下表达式:

function(d){return d.parentId == 3 || d.parentId == 1 || d.parentId == 0;}

有什么聪明的方法可以做到这一点吗?类似于布尔表达式的串联吗?



1> Mihai Alexan..:

您可以使用indexOf检查item给定中是否存在的方法array

indexOf方法返回指定值的第一次出现,-1如果value找不到,则返回。

var toBeFiltered = [
  {name:"A", parentId: 0},
  {name: "B", parentId: 3},
  {name: "C", parentId: 0},
  {name: "D", parentId: 1},
  {name: "E", parentId: 4}
]
var filtering = [3,1,0];
toBeFiltered=toBeFiltered.filter(a=>filtering.indexOf(a.parentId)!==-1);
console.log(toBeFiltered);

推荐阅读
author-avatar
手机用户2502887521
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有