如果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文件有点大,只是一个例子。
答案 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)将字符串中的值转换为数字