当前位置:  开发笔记 > 编程语言 > 正文

在第一个结果处停止的JavaScript过滤器

如何解决《在第一个结果处停止的JavaScript过滤器》经验,为你挑选了1个好方法。

JavaScript中是否存在类似的机制(无需编写自己的机制) filter.而不是返回集合的所有过滤元素,它只返回第一个.当然,我可以执行以下操作来获得第一个偶数:

[7,5,3,2,1].filter(x => x % 2 == 0)[0]

但如果该列表中有1000万个数字,则会有很多不必要的工作.在像Haskell这样的语言中,由于懒惰的评估,其他1000万个数字不会被查看.

有没有一种机制在JavaScript中执行上述操作而不在第一次结果后评估任何元素?



1> mrlew..:

你可以尝试.find:

[7,5,3,2,1].find(x => x % 2 == 0)
2

来自文档:

find()方法返回数组中第一个满足提供的测试函数的元素的值.否则返回undefined.

简单的基准

var arr = [...Array(10000)].map( (item, idx) => idx )

arr.filter(i => i == 3000)[0]
arr.find(i => i == 3000)

/*
  arr.filter x 1,358 ops/sec ±0.40% (91 runs sampled)
  arr.find x 23,743 ops/sec ±0.40% (90 runs sampled)
  Fastest is arr.find
*/

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有