gpt4 book ai didi

javascript - 在 JavaScript 中使用具有多个条件的 JSONS 过滤数组

转载 作者:行者123 更新时间:2023-12-02 18:02:12 34 4
gpt4 key购买 nike

我有以下数组

 let tableA=[{id:'1', name:'name1',age:'31',gender:'male',class='B'},
{id:'2', name:'name2',age:'38',gender:'male',class='A'},
{id:'3', name:'name3',age:'35',gender:'male',class='C'},
{id:'4', name:'name4',age:'20',gender:'female',class='B'},
{id:'5', name:'name5',age:'19',gender:'female',class='A'},
{id:'6', name:'name6',age:'31',gender:'male',class='A'}
];

这个过滤器数组

 let filters = [{type:'gender',value:"male"}, {type:'age',value:"31"}];

我正在尝试使用表过滤器的值来过滤 tableA,所有过滤器必须匹配。过滤器不是静态的,这意味着过滤器可以包含所有表键的 json 文件。

到目前为止,我正在尝试使用上面的代码过滤 table_A。

 let filtered_table=[];
tableA.forEach(row => {
filters.map((item) => {
if(row[item.type]==item.value){
filtered_table.push(row);
}
});
});
console.log(filtered_table);

上面代码的结果是:

 [ { id: '1', name: 'name1', age: '31', gender: 'male', class: 'B' },
{ id: '1', name: 'name1', age: '31', gender: 'male', class: 'B' },
{ id: '2', name: 'name2', age: '38', gender: 'male', class: 'A' },
{ id: '3', name: 'name3', age: '35', gender: 'male', class: 'C' },
{ id: '6', name: 'name6', age: '31', gender: 'male', class: 'A' },
{ id: '6', name: 'name6', age: '31', gender: 'male', class: 'A' } ]

如何才能只返回与所有filters_table 项目组合相匹配的行?对于这个例子,我期望这样:

[ { id: '1', name: 'name1', age: '31', gender: 'male', class: 'B' },
{ id: '6', name: 'name6', age: '31', gender: 'male', class: 'A' } ]

最佳答案


let filtered_table=[];
tableA.forEach(row => {
const flag = filters.map((item) => {
if(row[item.type]==item.value){
return 1;
} else {
return 0;
}
});
if(flag.filter(el=>el != 1).length==0) {
filtered_table.push(row);
}
});
console.log(filtered_table);

关于javascript - 在 JavaScript 中使用具有多个条件的 JSONS 过滤数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74128925/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com