1
我有以下阵列(这里显示为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
属性的最高值物体在顶部这个数组排序的阵列。
我用下面的代码(基于主题offered by 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
应该给予正确的结果,但它不”似乎。
我会做什么错?
感谢:
如下改写了!我以某种方式设法让数据的JSON表示感到困惑,因为我意外地认为“低于”“低于JSON表示”而不是“低于指数”。 – 2013-04-05 16:58:03