这个问题是最近做某商城本页面的表格单元格按价格动态排序时遇到的,浏览器老卡死,调试了下才发现,后来采用json + array结合的方式实现了。
普通数组
var tmpArrX = ['aaa','bbb','ccc']; console.log(tmpArrX.length);//输出3
有下标的数组,问题出现了。
var tmpArr = []; tmpArr[10] = 'aaa'; tmpArr[5000] = 'bbb'; tmpArr[100] = 'ccc'; console.log(tmpArr.length);//输出5001,而不是3。js取了数组最大下标+1做为长度。
这时根据length使用for循环就引发了一个问题
方法一:取数组中的元素
for(var i=0;i<tmpArr.length;i++){ //此时将从0开始,一直循环到5000;由于很多键不存在,期间将输出很多个undefined; //程序里多几个这样的循环,或数组长度更长,浏览器就卡死了 console.log(tmpArr[i]); }
方法二:取数组中的元素
for(var i in tmpArr){ //此时只遍历3次,即可取到值aaa,bbb,ccc console.log(tmpArr[i]); }
如果一定要取数组中的元素的个数,似乎也没有好方法,还是使用方法二的方式计算。
var arrCount = 0; for(var i in tmpArr){ arrCount++; } console.log(arrCount);//输出3