日期:2014-05-16 浏览次数:20337 次
对于数组遍历,一般的做法是:
?
//新建数组 var arr = new Array(); arr.push("abc"); arr.push("abc1"); //对数组进行遍历 for(var i = 0;i < arr.length; i++){ console.log(arr[i]); }
?
?使用javascript的for in遍历数组
?
for(var i in arr){ console.log(i + " " + arr[i]); }?
本该只有2项元素的数组,结果显示出来了4项,比我们预期多了两项indexOf和remove:
?
0 abc 1 abc1 indexOf function(c){for(var b=0,a=this.length;b<a;b++){if(this[b]==c){return b}}return -1} remove function(b){var a=this.indexOf(b);if(a!=-1){this.splice(a,1)}return this}?
这样就暴露出了for in 遍历数组的缺点,增强判断条件解决这个问题。
?
?
for ( var i in arr) { if (arr.hasOwnProperty(i)) { console.log(i + '' + arr[i]); } }?
这里用的的hasOwnProperty()函数方法是返回一个布尔值,指出一个对象是否具有指定名称的属性。
此方法无法检查该对象的原型链中是否具有该属性;该属性必须是对象本身的一个成员。
?
?