JavaScript对象数组未正确排序

时间:2015-08-04 05:52:32

标签: javascript arrays sorting

我有这个对象数组

var grps = [{
    group_no: 0,
    id: "733",
    xpos: 226.72,
    ypos: 100
}, {
    group_no: 0,
    id: "735",
    xpos: -1.19,
    ypos: 200
}];

我试图根据值xpos

对数组进行排序
var small_x = grps.sort(function(a, b) {
    return a.xpos - b.xpos;
});

当我做的时候

 console.log(small_x[0].xpos); //sort asc

我希望该值为-1.19,但我得226.72

1 个答案:

答案 0 :(得分:2)

见下文(也适用于字符串值)。 ECMA脚本没有指定使用了哪个算法。但是,简单地说,比较a的posx是<,>或(其他)== posx of b。这将返回resp。 -1,1或0,可以简单排序。

另请参阅Mozilla Developer Network的文档,其中包含说明,示例,ECMA脚本说明以及下面的示例(概念性):https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

function comparePos(a, b)
{
   if (a.xpos < b.xpos)
      return -1;
   if (a.xpos > b.xpos)
      return 1;
   return 0;
}

grps.sort(comparePos);

请参阅:Sort array of objects by string property value in JavaScript