我最近开始放弃下划线/ lodash过度使用(部分)我的项目,并意识到浏览器中没有完全支持find方法。 ES6方法find与使用.shift()而不是filter结果之间的差异
var user = users.find(function() { ... } );
或
var user = users.filter(function() { ... } ).shift();
我想在"找到"方法(停止迭代拳头比赛),但是我可以使用第二种方法得到意想不到的结果吗?我应该使用polyfill吗?为什么呢?
答案 0 :(得分:86)
除了显而易见(且明显)的开销之外,是的,结果可能会有所不同。 filter
运行到数组的末尾,并在每个项目上调用它的回调;与find
相反,find
在找到之后停止。当回调在这些另外迭代的元素之一上抛出异常时,结果是不同的
我认为没有任何理由不使用scrollView
。
答案 1 :(得分:15)
使用polyfill; users.filter(function() { ... } ).shift();
在触发不必要的垃圾收集时会抛弃周期。
filter
扫描整个阵列并创建另一个阵列shift
现在必须更改临时数组的所有索引使用users.filter(function() { ... } )[0]