带有或结果的javascript动态过滤器

带有或结果的javascript动态过滤器,javascript,Javascript,我有一个包含多个字段的对象数组,即 Person { name: string; age: number; addressLines: string[]; }[]; 我也有动态搜索参数,即 parameters: ['mary', 'oregon'] //may be a longer/shorter array 假设我的输入是: [ { name: 'john mark', age: '29', addressLines: ['566 long street

我有一个包含多个字段的对象数组,即

Person
{
    name: string;
    age: number;
    addressLines: string[];
}[];
我也有动态搜索参数,即

parameters: ['mary', 'oregon'] //may be a longer/shorter array
假设我的输入是:

[
    { name: 'john mark', age: '29', addressLines: ['566 long street', 'oregon']},
    { name: 'williams', age: '30', addressLines: ['oregon']},
    { name: 'moore mary', age: '40', addressLines: ['street 61', 'salt lake']}
]
我的输出应该是:

[
    { name: 'john mark', age: '29', addressLines: ['566 long street', 'oregon']}, // oregon
    { name: 'moore mary', age: '40', addressLines: ['street 61', 'salt lake']} //mary
]

如何使用filter方法实现这一点?提前谢谢。

您可以这样做:


典型人物=
{
名称:字符串;
年龄:人数;
addressLines:字符串[];
}[];
警察人数:人=[
{姓名:'john mark',年龄:29岁,地址:['566 long street','oregon']},
{姓名:'williams',年龄:30岁,地址:['oregon']},
{姓名:'moore mary',年龄:40岁,地址:['street 61','salt lake']}
]
常量参数=['mary','oregon']
const foundPersons=personArray.filter((person)=>{
设匹配=假
parameters.forEach((param)=>{
//检查名称是否匹配
如果(person.name.includes(param))匹配=true;
//检查地址是否匹配
person.addressLines.forEach((addressPart)=>{
如果(addressPart.includes(param))匹配=真;
})
//检查年龄是否匹配
如果(person.age==param)匹配=true;
})
回报匹配
})
看到它在行动吗

PS:根据给定的参数,一切都匹配