gpt4 book ai didi

javascript - 一对一过滤JavaScript数组添加/删除条件

转载 作者:行者123 更新时间:2023-12-02 08:01:35 25 4
gpt4 key购买 nike

我想一一过滤具有多个搜索条件的对象数组。

假设第一个过滤条件是“x”,然后应用“x + y”等。只要x或“x + y”与对象数组匹配,就会显示匹配的结果。

如果用户要删除“x”或“y”,则数组应做出相应的响应。

例如:这里x =孟买,然后y = 25

   var users = [{
name: 'nitin',
email: 'nitin@mail.com',
age: 25,
address: 'mumbai'
},
{
name: 'pawan',
email: 'pan@mail.com',
age: 35,
address: 'kolkata'
},
{
name: 'sudip',
email: 'sudip@mail.com',
age: 28,
address: 'mumbai'
}];

this.searchGridText = "";
this.users = this.users.filter((data) => {
const stringified = JSON.stringify(data);
const filtered = stringified.replace(/"\w+":/gm, '');

return (filtered.toLowerCase()
.indexOf(this.searchGridText.toLowerCase().trim()) !== -1);

});

当搜索条件为“孟买”时,应返回两个记录,然后搜索条件为25,应返回一个记录。如果删除了孟买搜索条件,则仅显示与25匹配的记录。将在文本框中输入搜索条件,输入时按下键,然后过滤器将应用于对象数组。

最佳答案

这是通过Array.filterArray.everyArray.someObject.values做到这一点的方法:

var users = [{ name: 'nitin', email: 'nitin@mail.com', age: 25, address: 'mumbai' }, { name: 'pawan', email: 'pan@mail.com', age: 35, address: 'kolkata' }, { name: 'sudip', email: 'sudip@mail.com', age: 28, address: 'mumbai' } ]; 

let findUsers = (arr, filters) => {
let fs = filters.split('+').map(x => x.trim().toLowerCase())
return arr.filter(x => {
let vs = Object.values(x)
return fs.every(f => vs.some(v => v.toString().trim().toLowerCase().includes(f)))
})
}

console.log(findUsers(users, 'mumbai'))
console.log(findUsers(users, 'mumbai + 25'))
console.log(findUsers(users, 'sudip'))


想法是过滤并在内部获取每个对象的值,并在它们之间进行迭代,以尝试将传递给函数过滤器的值进行匹配。

关于javascript - 一对一过滤JavaScript数组添加/删除条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56607595/

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