[英]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.