我有以下数组(这里显示为 JSON):
[{
"value": -1,
"absolute": false,
"callTime": 0
}, {
"value": 23,
"absolute": true,
"callTime": 1365179295887
}, {
"value": 1,
"absolute": false,
"callTime": 0
}, {
"value": 1,
"absolute": true,
"callTime": 0
}]
我需要通过将具有最高callTime
属性值的对象放在数组顶部来对该数组进行排序。
我使用以下代码(基于MDN 提供的主题的解释):
var handlers = JSON.parse("[...]");
handlers.sort(function(firstHandler, secondHandler) {
if (firstHandler.callTime < secondHandler.callTime) {
return -1; // sort firstHandler to a lower index than secondHandler.
} else {
return 1; // sort secondHandler to a lower index than firstHandler.
}
return 0;
});
console.log(JSON.stringify(handlers));
运行该函数后,我得到以下输出:
[{
"value": 1,
"absolute": true,
"callTime": 0
}, {
"value": 1,
"absolute": false,
"callTime": 0
}, {
"value": -1,
"absolute": false,
"callTime": 0
}, {
"value": 94,
"absolute": true,
"callTime": 1365179553381
}]
这似乎与我所期望的相反(注意唯一callTime
不同于零的对象在底部)。
我认为我可能在这里遗漏了一些重要的东西,或者我只是被误导了,而且还将函数的主体更改为:
return firstHandler.callTime - secondHandler.callTime
应该给出正确的结果,但似乎没有。
我可能做错了什么?