为了账号安全,请及时绑定邮箱和手机立即绑定

先filter后再跑for,效能会比直接跑for好吗

先filter后再跑for,效能会比直接跑for好吗

繁华开满天机 2019-02-26 20:24:23
一种是先做过滤,然后再跑forEach或for做事情function test(a) {    this.test.filter(function (i) {        return a.id == i.id;     }).forEach(function (item) {         a.isOpen = !a.isOpen;     }); }一种是直接用forEach或for处理function test(c){    for (let i in this.test)        if(test[i].id == c.id)            test[i].isOpen = !cards[i].isOpen }代码仅供参考,想知道的是资料量很大时先filter滤出想要的东西后再跑for,效能会比直接跑for好吗?
查看完整描述

3 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

通常情况下,循环次数都是越少越好filter本质也是先通过for循环过滤后再返回,因此第一种的优点就是简化了写法,但同时循环了两轮。而第二种判断及赋值一个for循环就解决了。

究竟用哪种是看你 需求 来的

第一种 数据量小时,filter写法,简化了代码,看上去更直观,可读性更高,但数据量特别大时效率会很低,同时不兼容低版本ie
第二种 浏览器都支持,逻辑复杂了之后代码可读性会较差,但是数据量大时效率要比filterforEach组合的方式高不少

但是通常场景下日常操作的数据量不可能十分庞大,而且前端处理特别大数据量的需求也不合理,究竟如何取舍还是看开发环境来的


查看完整回答
反对 回复 2019-02-26
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

逻辑不复杂,一个for能解决肯定是一个for好!

查看完整回答
反对 回复 2019-02-26
  • 3 回答
  • 0 关注
  • 1122 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信