Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何对数组进行排序?_Javascript_Arrays - Fatal编程技术网

Javascript 如何对数组进行排序?

Javascript 如何对数组进行排序?,javascript,arrays,Javascript,Arrays,我需要根据“超过”和“低于”匹配概率之间的差异对下面的数组进行排序,这样最均衡的结果将出现在主数组的第一行 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 }}

我需要根据“超过”和“低于”匹配概率之间的差异对下面的数组进行排序,这样最均衡的结果将出现在主数组的第一行

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
];
我读过这篇文章,但对我来说没有任何帮助

我刚刚解决了。谢谢大家

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)));
    });

这怎么没有任何帮助?它向您展示了如何通过传递自定义比较回调函数对数组进行排序。您只需对主数组进行排序,并在回调中比较其中的两个项。您的数组太多,不需要嵌套数组。如果您只是使用colleciton,您可以尝试下划线的
排序,方法是
函数(a,b){return Math.abs(a.over-a.under)-Math.abs(b.over-a.under);}
@NiettheDarkAbsol:如果OP没有嵌套所有内容,这将起作用。我会研究如何修复源代码,这样我就有了一个像样的数据结构来处理。@elclanrs哦,是的。我猜是
a[0]。超过了
等。但是是的,超过了嵌套。感谢CrossUI,它太完美了。不过对这里的选民有点失望。我认为用上面提到的例子根本无法解决这个问题。除此之外,我自己提供了它,这意味着我做了研究,证明了它,但它不起作用。再次感谢CrossUi!
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;
});