优化Javascript数据遍历

Posted 力为

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了优化Javascript数据遍历相关的知识,希望对你有一定的参考价值。

问题

M是一个对象的集合,没个对象拥有唯一的字符串类型的Id

N是Id的集合。

从M中过滤掉Id不在N中的对象。

假如M有50w个数据,N中可能是0~50w任意的数据。


方案1

使用数组保存Id的集合。

这样就有两种方式遍历

1.1 

N = [id, ...];


for(var m in M)

   for(var n in N)

 .....

1.2

for(var m in M)

    if(N.indexOf(m.id) > -1)

方案2

使用“dict/map”来保存Id的集合

N = id:0, ....;


2.1

//遍历

for( var m in M)

   if(n[m.id] !== undefined)

....


结论

dict与array PK,结果显而易见,速度2.1 > 1.2 > 1.1。


以上是关于优化Javascript数据遍历的主要内容,如果未能解决你的问题,请参考以下文章

Javascript中for-in效率分析和优化

JavaScript中,数组和对象的遍历方法总结

代码优化:遍历查询数据库代码优化

代码优化:遍历查询数据库代码优化

List嵌套遍历优化

js数组遍历的常用的几种方法以及差异和性能优化