gpt4 book ai didi

javascript - 用数字和字符串细化数组的搜索结果

转载 作者:行者123 更新时间:2023-11-30 14:34:15 25 4
gpt4 key购买 nike

我正在寻求改进我正在制作的应用程序的当前搜索功能。

我目前正在从 firebase 查询中获取一组对象,如下所示

{
make: "make",
model: "model",
year: 2002,
gas: "petrol",
mileage: "mileage",
images: {
image1: "url",
image2: "url"
},
price: 1295
}

我目前使用 filter 方法过滤数组,并将包含优化的对象与原始数组进行比较,如下所示

refine = (refinements, currentResults) => {
return currentResults.filter(result => this.matchesAll(refinements, result));
}

matchesAll = (refinements, result) => {
for (const key in refinements) {
if (refinements[key] !== result[key]) {
return false;
}
}
return true;
}

这对于比较包含字符串的字段非常有效,但是如果用户想要检查最低年龄或最高价格,我不知道如何实现它。

有什么建议吗?

最佳答案

一种方法是使用一个字段来描述您要执行的比较类型:“min”、“max”或“equal”:

    //----refinements could be:

{
"price":
{ "type":"max",
"value":1000
},
"age":
{ "type":"min",
"value":18
},
"name":
{ "type":"eq",
"value":'dsjkds'
},
...
}

还有你的过滤器:

    refine = (refinements, currentResults) => {
return currentResults.filter(result => this.matchesAll(refinements, result));
}

matchesAll = (refinements, result) => {
for (const key in refinements) {
if(refinements[key]['type'] === 'min'){
if (refinements[key] > result[key]) {
return false;
}
}else if(refinements[key]['type'] === 'max'){
if (refinements[key] < result[key]) {
return false;
}
}else{
if (refinements[key] !== result[key]) {
return false;
}
}
}
return true;
}

关于javascript - 用数字和字符串细化数组的搜索结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50660629/

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