Javascript JS声称656

Javascript JS声称656,javascript,jquery,json,Javascript,Jquery,Json,我有一个json数组的结构: { data : [ { "num" : val , "time" : val } , ... ] } 我需要找到num的最大值和最小/最大时间,以及将对象移动到元组数组中: [[time,num]...] 为此,我使用以下结构它是一个成功回调,输出为json字符串: var json = $.parseJSON(output); var xmin = json.data[0].time ; var xma

我有一个json数组的结构:

 { data : [ { "num" : val , "time" : val } , ... ] }
我需要找到num的最大值和最小/最大时间,以及将对象移动到元组数组中:

 [[time,num]...]
为此,我使用以下结构它是一个成功回调,输出为json字符串:

        var json = $.parseJSON(output);

        var xmin = json.data[0].time ; 
        var xmax = json.data[0].time ; 
        var ymax = json.data[0].num  ;

        var data = [];

        //console.log(Math.max.apply(Math,json.data.num));

        for( i = 0 ; i < json.data.length ; i++){
            if( json.data[i].time < xmin){ 
                xmin = json.data[i].time;
            }
            if( json.data[i].time > xmax){ 
                xmax = json.data[i].time;
            }

            if(  ymax < json.data[i].num  ){ 
                console.log(ymax + " " + json.data[i].num + "b " + (ymax > json.data[i].num) );                 
                ymax = json.data[i].num ;
                console.log(ymax + " " + json.data[i].num+ "a");
            }

            data.push([json.data[i].time,json.data[i].num]);
        }

正如你所见,它声称656<7是正确的。我不是异步大师,任何帮助都将不胜感激。

尝试与intval进行比较。您可能正在将字符串与整数进行比较。一个简单的javascript:alert656在比较之前,请确保正确地将字符串转换为数字:

var ymax = parseInt(json.data[0].num, 10);

....

var ycur = parseInt(json.data[i].num, 10);
if(  ymax < ycur  ){ 
    console.log(ymax + " " + ycur + "b " + (ymax > ycur) );                 
    ymax = ycur;
    console.log(ymax + " " + ycur + "a");
}

如前所述,您正在比较字符串而不是值。将字符串转换为整数的有用快捷方式是~~:

e、 g


~~比parseInt更短更快。唯一的缺点是它仅限于在实际情况下非常大的典型最大整数值。

您没有显示重要部分的实际数据,但是我猜您是在比较字符串和整数/浮点。使用parseIntn、10或parseFloatnAre确定这些是数字而不是字符串吗?很明显,您使用的是字符串656<7==trueStrings会逐个字符进行比较,除非它们不相等或没有任何字符可供比较。“656”的第一个字符小于“7”的第一个字符。这就是原因。@MatteoTassinari+adeneo你们是对的。问数据的人没有回答这个问题。
var ymax = parseInt(json.data[0].num, 10);

....

var ycur = parseInt(json.data[i].num, 10);
if(  ymax < ycur  ){ 
    console.log(ymax + " " + ycur + "b " + (ymax > ycur) );                 
    ymax = ycur;
    console.log(ymax + " " + ycur + "a");
}
ymax = Math.max(ymax, parseInt(json.data[i].num, 10));
var ymax = ~~json.data[0].num;
var ycur = ~~json.data[i].num;
if(  ymax < ycur  ){
    ...
}