JavaScript对象数组没有正确排序

JavaScript object array not properly sorting

本文关键字:排序 对象 数组 JavaScript      更新时间:2023-09-26

我有这个对象数组

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

见下文(也适用于字符串值)。ECMA脚本没有指定使用了哪种算法。但是,简单地说,compare posx (a) = <,> or (else) == posx (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);