我有这个函数用于返回数组的最大值:
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
)但它不会进入条件
这里发生了什么?
答案 0 :(得分:7)
您有一系列字符串,而不是数字。字符串&#34; 6&#34;大于字符串&#34; 12&#34;。
尝试初始化数组时不使用值的引号。
答案 1 :(得分:1)
您正在比较字符串。 “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());