代码之家  ›  专栏  ›  技术社区  ›  Marc

为什么Safari 5不对一组对象排序?

  •  18
  • Marc  · 技术社区  · 15 年前

    有人知道为什么Safari5(Windows7)不能对对象数组排序吗?

    var arr = [{a:1},{a:3},{a:2}];
    console.log(arr[0].a+','+arr[1].a+','+arr[2].a);
    arr.sort(function(a,b){return a.a > b.a;});
    console.log(arr[0].a+','+arr[1].a+','+arr[2].a);
    

    控制台结果应该是

    1,3,2
    1,2,3
    

    这在FF和IE中工作正常,但Safari返回:

    1,3,2
    1,3,2
    
    1 回复  |  直到 15 年前
        1
  •  47
  •   casablanca    15 年前

    您的比较函数错误:

    function(a,b){return a.a > b.a;}
    

    根据a<b、a=b或a>b,函数应返回负、零或正。您的函数返回一个布尔值,指示a>b。请尝试如下操作:

    function(a,b){return a.a - b.a;}