我有一个2000+作者的数组。我需要排序的名称,有最后,但也过滤掉任何名称,没有任何职位。
在我的脑海里,我认为先过滤,然后排序会更快。但在使用www.example.com测试时Performance.now,它们似乎是一样的?(在一个小列表(10-20个作者)上测试。
items.filter((item) => item.author.posts.total)
.sort(function (a, b) {
return (
b.author.posts.total -
a.author.posts.total
);
})
OR
items.sort(function (a, b) {
return (
b.author.posts.total -
a.author.posts.total
);
})
.filter((item) => item.author.posts.total)
2条答案
按热度按时间zf9nrax11#
对于小样本的数据,它不会改变任何东西,但是对于大样本,最好先过滤,然后再dort,因为js使用
O(n log n)
的快速排序(这是当今最快的算法之一),所以数据越少,速度就越快,而过滤缩小了样本的大小,所以先过滤速度更快。希望对你有帮助!
jobtbby32#
在一个小列表(10-20位作者)上进行测试。
性能测试毫无意义,除非所讨论的数据大到需要占用大量CPU来处理。Even then, they're often unreliable.。
也就是说,假设数组中有大量的元素,并且数组还没有以任何方式排序,那么首先使用
.filter
从数组中删除不需要的元素应该比包括对它们进行不必要的排序,然后再删除它们更快。排序具有× 1 m2n1x复杂度(如果数据开始时完全未排序)。