gpt4 book ai didi

javascript - 根据多个搜索词筛选对象数组

转载 作者:行者123 更新时间:2023-12-04 15:07:40 24 4
gpt4 key购买 nike

假设我有一个搜索词,const searchTerms = ['sarasota', 'fl']

和位置列表,

const selectedRestaurants = [{
city: "Orlando",
name: "Dons Food Place",
state: "FL",
id: 1
},
{
city: "Sarasota",
name: "Rons World",
state: "FL",
id: 2
}]

如果我搜索“Sarasota FL”,我只想返回一个 Sarasota FL 位置。但是,如果我基于多个参数(城市和州)进行搜索,则搜索会返回两个位置,因为它与我第二次迭代期间的州相匹配。编辑:当我只搜索“Sarasota”时,我也需要这个来工作

这是我的代码:

filterBySearchTerm(searchTerms) {
let searchedRestaurants = [];

for (var j = 0; j < selectedRestaurants.length; j++) {
searchTerms.forEach(term => {
if (term.toLowerCase() === this.state.selectedRestaurants[j].city.toLowerCase()) {
searchedRestaurants.push(this.state.selectedRestaurants[j])
}
if (term.toLowerCase() === this.state.selectedRestaurants[j].state.toLowerCase()) {
searchedRestaurants.push(this.state.selectedRestaurants[j])
}
if (term.toLowerCase() === this.state.selectedRestaurants[j].name.toLowerCase()) {
searchedRestaurants.push(this.state.selectedRestaurants[j])
}
})
}

//I use Set to remove duplicates ^^
searchedRestaurants = [...new Set(searchedRestaurants)]

return searchedRestaurants;
}

我现在已经被困在这个问题上了……有人能帮忙吗?可能没有什么不同,但我在 ReactJS 中。

最佳答案

const restaurants = [
{
city: 'Orlando',
name: 'Dons Food Place',
state: 'FL',
id: 1,
},
{
city: 'Sarasota',
name: 'Rons World',
state: 'FL',
id: 2,
},
];
const searchTerms = ['sarasota', 'fl'];
const lowerCasedTerms = searchTerms.map((term) => term.toLowerCase());
const params = ['city', 'state'];

const result = restaurants.filter((restaurant) =>
lowerCasedTerms.every((lowerCasedTerm) =>
params.some((param) => restaurant[param].toLowerCase().includes(lowerCasedTerm)),
),
);

console.log(result);

关于javascript - 根据多个搜索词筛选对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65779564/

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