遍歷javascript中的數組,最大最小值獲取

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;

             }

    })

}

相關文章
相關標籤/搜索