1. for in是用來迭代對象的屬性的,用來遍歷數組可能會出現各類問題,因此仍是用傳統的for i=0; i<length;i++。
我在代碼中看到的 數組
|
var modules = ['aaa','bbb'];this for(var i in modules){spa if (modules.hasOwnProperty(i)){prototype // do something here對象 }索引 }ci |
若是這樣去遍歷數組,則i的值是數組的索引0, 1, 2 ... 可是若是有人像下面這樣修改了Array的原型,則for in就會掛掉。: 原型鏈
|
Array.prototype.foo = "foo!";原型 var array = ['a', 'b', 'c'];io
for (var i in array) { alert(array[i]); } |
簡單解釋歡迎提建議:for i=0; i<length;i++ 循環 取到數組長度,到長度-1就不繼續往下循環控制住,而for in 是在數組中找不到,會繼續往原型鏈中找,知道原型鏈中沒有值。
2.獲取數組中最大值最小值:
var numReg = /^-?[0-9]+.?[0-9]*$/
Array.prototype.min = function() {
return this.reduce(function(preValue, curValue,index,array) {
if ( numReg.test(preValue) && numReg.test(curValue) ) {
return preValue > curValue ? curValue : preValue;
} else if ( numReg.test(preValue) ) {
return preValue;
} else if ( numReg.test(curValue) ) {
return curValue;
} else {
return 0;
}
})
}
Array.prototype.max = function() {
return this.reduce(function(preValue, curValue,index,array) {
if ( numReg.test(preValue) && numReg.test(curValue) ) {
return preValue < curValue ? curValue : preValue;
} else if ( numReg.test(preValue) ) {
return preValue;
} else if ( numReg.test(curValue) ) {
return curValue;
} else {
return 0;
}
})
}