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

标签 javascript react-native

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

我目前正在从 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/

相关文章:

javascript - 在 ng-click 中提交 &lt;input&gt; 调用函数

javascript - 如何仅在第一次点击后显示html视频控件?

javascript - 从事件中获取 react native 组件 Prop

javascript - onPress 方法中箭头函数与普通函数的行为

react-native - 无法使用自定义主题覆盖默认的 Amplify withAuthenticator 样式

javascript - 为什么 {}+[] 与 ({}+[]) 不同?

javascript - 如何在光滑 slider 的左侧对齐?

React Native 中的 Firebase Firestore 集合检索

android - 使用 react-native-push-notification 删除以前的通知

javascript - Angular JQuery UI 元素的可拖动副本