使用Javascript排序

Ste*_*ven 2 javascript sorting

我试图让我的页面按event_id排序.目前我的代码编写方式我将得到第一个记录,例如6719然后6700,6701,6702等.它应该像6719,6718,6716等.让我知道我需要如何重写此代码以直接降序排序.

function() {
    this.blockEvent();
    this.sort(function(a, b) {
        return a.event_id < b.event_id ? 1 : 1
    });
    this.unblockEvent();
}
Run Code Online (Sandbox Code Playgroud)

the*_*eye 5

如果event_ids相等,则需要返回0.而不是返回三个不同的值取决于值,如果它们都是数字,您可以简单地返回它们的差异

this.sort(function(a, b) {
    return b.event_id - a.event_id;
});
Run Code Online (Sandbox Code Playgroud)

这是因为,JavaScript的Array.prototype.sort函数接受一个函数,该函数返回一个数字作为输出,应该是

  1. 如果第一个值小于第二个值,则为负数

  2. 如果第二个值大于第一个值,则为正数

  3. 零,如果两者都相同.

例如,如果您有对象列表,就像这样

var objects = [{
    "event_id": 6701
}, {
    "event_id": 6719
}, {
    "event_id": 6710
}, {
    "event_id": 6703
}];
Run Code Online (Sandbox Code Playgroud)

您可以按升序对它们进行排序,如下所示

console.log(objects.sort(function(a, b) {
    return a.event_id - b.event_id;
}))
Run Code Online (Sandbox Code Playgroud)

产量

[ { event_id: 6701 },
  { event_id: 6703 },
  { event_id: 6710 },
  { event_id: 6719 } ]
Run Code Online (Sandbox Code Playgroud)

如果要按降序对它们进行排序,可以简单地反转要比较的数字

console.log(objects.sort(function(a, b) {
    return b.event_id - a.event_id;
}));
Run Code Online (Sandbox Code Playgroud)

产量

[ { event_id: 6719 },
  { event_id: 6710 },
  { event_id: 6703 },
  { event_id: 6701 } ]
Run Code Online (Sandbox Code Playgroud)