在一个问题中,讨论了jQuery和原生JS将如何相互对抗
当然,香草解决方案的执行速度要快得多,因为它不处理整个阵列。我建议使用array.filter
,我很有信心它至少比$.grep
快
令人惊讶的是,在将它添加到测试中之后,我得到了一个教训:Testsuite
边缘病例当然有不同的结果
任何人都知道为什么$.grep
应该比本机方法Arrray.filter
快3倍以上
编辑:我修改了测试以使用MDN中的过滤器垫片,结果非常有趣:
- Chrome:即使MDN shim也比原生方法快,jQuery遥遥领先
- Firefox:shim比原生方法慢一点,jQuery遥遥领先
最后我希望能看到这样的结果
- Internet Explorer:
原生方法是最快的,然后是jQuery,shim是最慢的(也许这只是IEs相当弱的JS引擎的结果…)
如这篇博文所示(该博文也进行了同样的测试):
如果您阅读
过滤器
的文档,就会明白为什么它会慢得多
- 它会忽略阵列中已删除的值和间隙
- 它可以选择设置谓词函数的执行上下文
- 它防止谓词函数改变数据