javascript

时间:2015-11-17 14:13:28

标签: javascript ecmascript-6

我最近开始放弃下划线/ lodash过度使用(部分)我的项目,并意识到浏览器中没有完全支持find方法。 ES6方法find与使用.shift()而不是filter结果之间的差异

var user = users.find(function() { ... } );

var user = users.filter(function() { ... } ).shift();

我想在"找到"方法(停止迭代拳头比赛),但是我可以使用第二种方法得到意想不到的结果吗?我应该使用polyfill吗?为什么呢?

2 个答案:

答案 0 :(得分:86)

除了显而易见(且明显)的开销之外,是的,结果可能会有所不同。 filter运行到数组的末尾,并在每个项目上调用它的回调;与find相反,find在找到之后停止。当回调在这些另外迭代的元素之一上抛出异常时,结果是不同的 我认为没有任何理由不使用scrollView

答案 1 :(得分:15)

使用polyfill; users.filter(function() { ... } ).shift();在触发不必要的垃圾收集时会抛弃周期。

  • filter扫描整个阵列并创建另一个阵列
  • shift现在必须更改临时数组的所有索引

使用users.filter(function() { ... } )[0]

的模式稍微浪费一点