1. 程式人生 > >js數組遍歷 千萬不要使用for...in...

js數組遍歷 千萬不要使用for...in...

prototype -h fun prot 數組 set splice mar init

昨天做個下拉框 擴充了一下數組的方法

Array.prototype.remove = function (val) {
var index = this.indexOf(val);
if (index > -1) {
this.splice(index, 1);
}
};

結果今天就遇到問題了
for (i in initMarker) {
initMarker[i].setMap(null);
}
用for in 循環數組

總是在最後多出一個romove方法

原因以及解決方法
第一種解決辦法:
hasOwnPrototype  選取自己的屬性,而不是從原型上繼承來的

for (i in initMarker) {
if(initMarker.hasOwnPrototype(i)){
      initMarker[i].setMap(null);    }   
}

第二種解決辦法:
for() 循環
for(var i=0;i<initMarker.length;i++){
initMarker[i].setMap(null);
}


js數組遍歷 千萬不要使用for...in...