首页 > 解决方案 > 更简单的数据过滤方法

问题描述

我试图找出一种更快的方法来过滤下面的标签,而不是使用map三次。

我看了一点loadash和他们的过滤功能。但似乎无助于提高速度。

export function tagFilter(reviews, userTags) {

    const arr = [];

    map(reviews, (review) => {

        let count = 0;

        map(review.tags, (tag) => {
            map(userTags, (userTag) => {
                if (userTag.tag_data.id === tag.id) count += 1;
            });
        });

        arr.push({ review, count });

    });

    arr.sort((a, b) => b.count - a.count);

    const reviewArray = [];

    arr.forEach((reviewObject) => {
        reviewArray.push(reviewObject.review);
    });

    return reviewArray;
}

任何建议都受到高度赞赏?

标签: javascriptarraysreactjsperformancefilter

解决方案


此循环选项中的 map、loop、for 循环和 lodash map 最快的是 lodash map,所以我确信你必须使用 lodash for map 没有其他循环库比 lodash 更快

这是原生地图与 lodash 地图的比较 https://jsperf.com/native-map-vs-lodash-map

显然lodash更快


推荐阅读