javascript - 更简单的数据过滤方法
问题描述
我试图找出一种更快的方法来过滤下面的标签,而不是使用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;
}
任何建议都受到高度赞赏?
解决方案
此循环选项中的 map、loop、for 循环和 lodash map 最快的是 lodash map,所以我确信你必须使用 lodash for map 没有其他循环库比 lodash 更快
这是原生地图与 lodash 地图的比较 https://jsperf.com/native-map-vs-lodash-map
显然lodash更快
推荐阅读
- python - PANDAS:数据框中的数学除法在由 7 个空格分隔的行之间
- react-native - 滑动到下一个屏幕(无限)
- php - 如何在 php 中的 html 标记内回显?
- android - 中心操作栏标题 - Android
- python - 限制生成的圆圈数量
- amazon-web-services - 与 tls 1.2 握手后 aws s3 cpp sdk finning 与 minio 的连接
- time-complexity - 你能解释一下为什么这个时间复杂度是 nlog(n)
- python - 使用逗号分隔的输入作为参数
- arrays - 获取二维数组中的多个元素,形状为 (*array)[column]
- c++ - C++ 高斯-赛德尔法