如何排序数组?

时间:2014-05-17 23:29:28

标签: javascript arrays

我需要根据" over"之间的差异对下面的数组进行排序。 "下"匹配的几率,所以最平衡的结果会转到主阵列的第一行!

var object = [
        [{"0.5": { "over": 1.2, "under": 3.8 }}], //difference 2.6
        [{"1.5": { "over": 1.5, "under": 2.8 }}], //difference 1.3
        [{"2.5": { "over": 1.9, "under": 2.0 }}], //difference 0.1
        [{"2.5": { "over": 2.2, "under": 1.8 }}], //difference 0.4
    ];

喜欢这个

var object = [
    [{ "2.5": { "over": 1.9, "under": 2.0 } }], //difference 0.1
    [{ "2.5": { "over": 2.2, "under": 1.8 } }], //difference 0.4
    [{ "1.5": { "over": 1.5, "under": 2.8 } }], //difference 1.3
    [{ "0.5": { "over": 1.2, "under": 3.8 } }], //difference 2.6
];

我已阅读此帖,但在我的案例中没有任何帮助

Sort Complex Array of Arrays by value within

我刚解决了。谢谢你们!

var obj = [{ value: 0.5, over: 1.2, under: 3.8 },
        { value: 1.5, over: 1.5, under: 3.2 },
        { value: 2.5, over: 1.8, under: 2.5 },
        { value: 3.5, over: 1.9, under: 1.9 },
        { value: 3.5, over: 2.5, under: 1.75 }];



obj.sort(function(a,b) { 
    return Math.min(Math.abs(parseFloat(b.over) - parseFloat(a.under)));
    });

1 个答案:

答案 0 :(得分:1)

object.sort(function(x,y){
    var xx,yy,x1,y1;
    for(var i in x[0]){xx=x[0][i];break;}
    for(var i in y[0]){yy=y[0][i];break;}
    x1=Math.abs(xx.over-xx.under);
    y1=Math.abs(yy.over-yy.under);
    return x1===y1?0:x1>y1?1:-1;
});
相关问题