javascript数组遍历之稀疏数组随记
平时在项目中我们遇到的数据大多数都是有序且索引是连续的元素的数组,而这次遇到一个数组索引值确是从10开始的数组,在for循环中访问元素的属性时确报错了。
查阅了一下资料,得知数组还有一种稀疏数组,在遍历稀疏数组时我们可以使用for/in来遍历它,for/in循环可以排除那些不存在索引
1 例如: 2 3 var arr=new Array(20); 4 arr[10]={x:1,y:1}; 5 arr[11]={x:2,y:2}; 6 arr[12]={x:3,y:3}; 7 arr[13]={x:4,y:4}; 8 arr[14]={x:5,y:5}; 9 arr[15]={x:6,y:6}; 10 arr[16]={x:7,y:7}; 11 arr[17]={x:8,y:8}; 12 arr[18]={x:9,y:9}; 13 arr[19]={x:10,y:10}; 14 console.log(arr); 15 16 //for in来遍历数组 17 for(var index in arr){ 18 console.log(arr[index].x); 19 } 20 21 //使用for来循环 22 for(var i=0;i<arr.length;i++){ 23 console.log(arr[i].x); 24 } 25 //此时报错Uncaught TypeError: Cannot read property 'x' of undefined 26 //因为当i的初始值为0,但数组的在索引0处却没有元素,故不能获取到x属性 27 //如果我们偏要使用for来循环的话,我们必须要过滤掉不存在的索引的值,我们可以使用in来检查数组对象中是否存在该元素 28 29 for(var i=0;i<arr.length;i++){ 30 if(!(i in arr)){ 31 console.log(arr[i].x); 32 } 33 }
浙公网安备 33010602011771号