繁体   English   中英

数组最大值功能产生意外结果

[英]Array max value function gives unexpected result

我有此函数用于返回数组的最大值:

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;
}

当我使用此数组时:

var data1Values = ['0','0','0','0','3','0','6','12']

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

我在循环中插入了alert(this[i])alert(max) ,它可以识别两个值(12作为this[i]和6作为max ),但不会输入条件。

这是怎么回事?

您有一个字符串数组,而不是数字数组。 字符串“ 6”大于字符串“ 12”。

尝试初始化数组,但不要在值两边加上引号。

您正在比较字符串。 “ 2”大于“ 1000”

更改为数字或添加parseInt(this [i],10)

演示

Array.prototype.max = function() {

  var len = this.length;
  var max = -1;
  for (var i=0; i < len; i++) {
    var val = parseInt(this[i],10);
    if (val > max) {       
        max = val;
    }
  }

  return max;
}

var data1Values = ['0','0','0','0','3','0','6','12']

alert(data1Values.max());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM