作者:手机用户2502887521 | 来源:互联网 | 2023-01-13 15:21
我需要基于另一个数组中可变数量的项目来过滤一个数组。说我要过滤的数组看起来像这样:
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);