最近工作的时候遇到了一个需求,后台返回三维数组,为了避免一直对后台请求,由前端把数据放到了本地进行状态的更改。最开始的想法是因为是三维数组所以肯定会利用到几次循环,为了简化代码,我先是使用了find方法去查找元素。利用三次find方法找到了我想要的数据然后进行更改。但是find方法会有兼容性问题,虽然看起来简便但是我觉得并不是很友好的方案。所以,我分别利用for,for in, indexOf,find遍历数组查看效率(每个方法只进行了三次记录,而且在chrome浏览器,没有测试其他浏览器)。这里没有使用foreach方法是因为foreach会把所有的数组都循环,不能中断,所以我淘汰了这个方法。
for循环我使用了break来增加效率。最后得到的数据:
find方法:1265,1255,1172;
for循环方法:103,106,102;
for in 方法:19301,19287,19288;
indexOf方法:92,85,86;
从数据看出,indexOf方法是最快的,但是也会出现兼容性,除此以外就是for循环最快了。虽然for循环很麻烦,但是效率确实是最高的。所以我确认使用for循环在项目中,但是三个for循环还要加上if判断最后还有逻辑的处理层级太多,对于以后的需求改变会很麻烦,所以不能直接嵌套for循环来取值。我就想解耦,把for循环拆分开。
把三个循环分开,最后在利用x,y,z来处理逻辑。这样就把循环和逻辑分开了。这是自己想到的办法,有更好的办法感谢简友分享。
网友评论