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

动态构建表达式以过滤Javascript数组,javascript,arrays,boolean-expression,Javascript,Arrays,Boolean Expression,我需要根据另一个数组中的可变项数筛选数组。 假设要筛选的数组如下所示: var toBeFiltered = [ {name:"A", parentId: 0}, {name: "B", parentId: 3}, {name: "C", parentId: 0}, {name: "D", parentId: 1}, ... ] 我需要过滤parentId在另一个数组中的所有元素(比如:var-filtering=[3,1,0],但它可以有任何长度)。 如何根据筛选数组的内

我需要根据另一个数组中的可变项数筛选数组。 假设要筛选的数组如下所示:

var toBeFiltered = [
  {name:"A", parentId: 0},
  {name: "B", parentId: 3},
  {name: "C", parentId: 0},
  {name: "D", parentId: 1},
  ...
]
我需要过滤
parentId
在另一个数组中的所有元素(比如:
var-filtering=[3,1,0]
,但它可以有任何长度)。 如何根据
筛选
数组的内容动态构建筛选表达式?在这种情况下,我将使用以下表达式结束:

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

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

您可以使用
indexOf
方法来检查给定
数组中是否存在

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

var tobefilted=[
{name:“A”,父ID:0},
{姓名:“B”,父ID:3},
{名称:“C”,父ID:0},
{名称:“D”,父ID:1},
{姓名:“E”,父ID:4}
]
var过滤=[3,1,0];
tobefilted=tobefilted.filter(a=>filtering.indexOf(a.parentId)!=-1);

console.log(待过滤)
您可以使用
indexOf
方法来检查给定
数组中是否存在

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

var tobefilted=[
{name:“A”,父ID:0},
{姓名:“B”,父ID:3},
{名称:“C”,父ID:0},
{名称:“D”,父ID:1},
{姓名:“E”,父ID:4}
]
var过滤=[3,1,0];
tobefilted=tobefilted.filter(a=>filtering.indexOf(a.parentId)!=-1);
console.log(待过滤)您可以

var tobefilted=[{name:“A”,parentId:0},{name:“B”,parentId:3},{name:“C”,parentId:0},{name:“D”,parentId:1}],
筛选=[1,0],//以防止获取与原始数组相同的数组
result=tobefilted.filter(o=>filtering.includes(o.parentId));
控制台日志(结果)
。作为控制台包装{最大高度:100%!重要;顶部:0;}
您可以

var tobefilted=[{name:“A”,parentId:0},{name:“B”,parentId:3},{name:“C”,parentId:0},{name:“D”,parentId:1}],
筛选=[1,0],//以防止获取与原始数组相同的数组
result=tobefilted.filter(o=>filtering.includes(o.parentId));
控制台日志(结果)

。作为控制台包装{最大高度:100%!重要;顶部:0;}
简单而优雅。我没有想到这一点。谢谢。简单而优雅。我没有想到这一点。谢谢,谢谢。我接受了另一个答案,因为includes比indexOf更不受支持。谢谢。我接受了另一个答案,因为include比indexOf更不受支持。