数组最大值函数给出意外结果

Alo*_*ler 1 javascript arrays for-loop max

我有这个函数来返回数组的最大值:

Array.prototype.max = function() {

var max = this[0];
var len = this.length;

for (var i = 1; i < len; i++)
{

    if (this[i] > max)
    {       
        max = this[i];
    }
}

    return max;
}
Run Code Online (Sandbox Code Playgroud)

当我使用这个数组时:

var data1Values = ['0','0','0','0','3','0','6','12']
Run Code Online (Sandbox Code Playgroud)

data1Values.max() 返回6而不是12.它以某种方式跳过最后一个值.

我插入alert(this[i])alert(max)在循环内部,它识别两个值(12为this[i]6和6 max)但它不会进入条件.

这里发生了什么?

Poi*_*nty 7

你有一个字符串数组,而不是数字.字符串"6"大于字符串"12".

尝试初始化数组而不使用值周围的引号.

  • 因为数字符号的排序与数字排序相同; 也就是说,字符'9'的代码值大于字符'8'.但是,对于多位数字字符串,如果第一个字符不同,则较大的字符串确定较大的字符串值.就像字典中"cat"之前的"apple"这个词一样; 'a'小于'c',这就是最重要的. (2认同)