日期:2014-05-16 浏览次数:20421 次
对于数组遍历,一般的做法是:
?
//新建数组
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()函数方法是返回一个布尔值,指出一个对象是否具有指定名称的属性。
此方法无法检查该对象的原型链中是否具有该属性;该属性必须是对象本身的一个成员。
?
?