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

一种是先做过滤,然后再跑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好吗?


繁华开满天机
浏览 1126回答 3
3回答

繁花不似锦

通常情况下,循环次数都是越少越好。filter本质也是先通过for循环过滤后再返回,因此第一种的优点就是简化了写法,但同时循环了两轮。而第二种判断及赋值一个for循环就解决了。究竟用哪种是看你 需求 来的第一种 数据量小时,filter写法,简化了代码,看上去更直观,可读性更高,但数据量特别大时效率会很低,同时不兼容低版本ie第二种 浏览器都支持,逻辑复杂了之后代码可读性会较差,但是数据量大时效率要比filter和forEach组合的方式高不少但是通常场景下日常操作的数据量不可能十分庞大,而且前端处理特别大数据量的需求也不合理,究竟如何取舍还是看开发环境来的

婷婷同学_

逻辑不复杂,一个for能解决肯定是一个for好!
打开App,查看更多内容
随时随地看视频慕课网APP