js中使用for in遍历数组出现问题
js总使用for in遍历json对象数组,却发现在对应的循环内json对象的属性都是undefined。
前面百思不得其解,各种打log发现是遍历后出现的问题。
百度人家说for in 一般用作js对象属性的遍历。数组对象的遍历最好是用for循环。
参考链接:https://blog.csdn.net/dreamcarp/article/details/71439026
前端小白,今天遇到了一个很严重bug。真的很小白!!!我对数组使用了for in遍历,然后for in会遍历到数组的后面添加的原型链属性,并不会遍历到原生原型链上的属性!!!并不是简单地便利数组中的数据。 1.对数组用for in时 Array.prototype.istrue = function(value) {return true;} var a = [1,2]; for(var i in a) { console.log(a[i]);} 输出结果: 1 2 function(value) {return true;} 所以数组的遍历中千万不要用for in,我们一般对对象的遍历使用。同时上面的i变量是string,并不是number 2.一般来说,我们对对象的遍历通常用for in var a = {"x":1,"y":2}; for(var i in a) { console.log(a[i]);} 输出结果: 1 2 3.对数组的遍历我平时常用的是forEach和map,很方便 4.如果使用了for in遍历数组,就用hasOwnProperty来规避遍历到原型链上的属性或方法 Array.prototype.istrue = function(value) {return true;} var a = [1,2]; for(var i in a) { if(a.hasOwnProperty(i){ console.log(a[i]); }) } 输出结果: 1 2

在w3school的文档说明,js基础不扎实!

浙公网安备 33010602011771号