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)
如果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函数接受一个函数,该函数返回一个数字作为输出,应该是
如果第一个值小于第二个值,则为负数
如果第二个值大于第一个值,则为正数
零,如果两者都相同.
例如,如果您有对象列表,就像这样
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)