如果77> 602会出现什么问题?

时间:2014-06-27 14:11:55

标签: javascript arrays json

如果77> 602会出现什么问题?我试过IE,Firefox和Chrome

function getMaxValue(data){
    var maxValue=0;
    for(var i=0;i<data.length;i++){

        if(data[i].value>maxValue){
             console.log(data[i].value +">"+maxValue);
             maxValue=data[i].value;
         }
     }
console.log("MaxValue:"+maxValue);
return maxValue;


}

我从json获取数据:

[{
"keyword": "User: Allen-P",
"value": "602"
}, {
"keyword": "From: phillip.allen@enron.com",
"value": "598"
},
{
"keyword": "Date: 2001",
"value": "276"
},
{
"keyword": "Subject: Re:",
"value": "228"
},
{
"keyword": "Date: 2001 Apr",
"value": "77"
},
]

需要为StackOverflow添加一些无用的描述。请帮我;)。 json文件有点大,只是一个例子。

3 个答案:

答案 0 :(得分:4)

字符串按字母顺序进行比较,即使它们包含数字。字符'7'后面的字符'6'按字母顺序排列,确实是字符串"77" > "602"

解决方案是首先将它们转换为数字:

    if(parseFloat(data[i].value) > maxValue){

或者为了简洁起见,一元+运算符也会执行此操作:

    if(+data[i].value > maxValue){

答案 1 :(得分:2)

您目前正在将整数与字符串进行比较,但在这种情况下,该字符串并不可靠。

更改您的JSON并取消引用值,或者改为使用以下代码:

function getMaxValue(data){
    var maxValue=0;
    for(var i=0;i<data.length;i++){

        if(parseInt(data[i].value) > maxValue) {
             console.log(data[i].value +">"+maxValue);
             maxValue=data[i].value;
         }
    }
    console.log("MaxValue:"+maxValue);
    return maxValue;
}

另请阅读this以供参考。

答案 2 :(得分:0)

您需要使用parseInt(value,10)将字符串中的值转换为数字