nei*_*ker 53 javascript ecmascript-6
我最近开始放弃下划线/ lodash过度使用(部分)我的项目并意识到浏览器中没有完全支持find方法.ES6方法查找和使用.shift()与过滤器结果之间的区别是什么
var user = users.find(function() { ... } );
Run Code Online (Sandbox Code Playgroud)
要么
var user = users.filter(function() { ... } ).shift();
Run Code Online (Sandbox Code Playgroud)
我认为对"find"方法有明显的优化(停止迭代拳头匹配),但是我可以使用第二种方法得到意想不到的结果吗?我应该使用polyfill吗?为什么?
Ber*_*rgi 102
除了明显(和明显)的开销之外,是的,结果可能会有所不同.filter
运行到数组的末尾,并在每个项目上调用它的回调; 相比之下find
,找到一个后停止.当回调在这些另外迭代的元素之一上抛出异常时,结果是不同的.
我认为没有任何理由不使用find
.