Javascript 使用自定义函数进行排序,得到相反的结果

Javascript 使用自定义函数进行排序,得到相反的结果,javascript,arrays,sorting,Javascript,Arrays,Sorting,我有以下数组(这里显示为JSON): 我需要通过将callTime属性值最高的对象放在数组顶部来对该数组进行排序 我使用以下代码(基于对主题的解释): 这似乎与我的预期相反(请注意,callTime不同于零的唯一对象位于底部) 我想这里我可能遗漏了一些重要的东西,或者我只是被误导了,但也将函数体更改为: return firstHandler.callTime - secondHandler.callTime 应该给出正确的结果,但似乎没有 我可能做错了什么?您的排序功能不正确。逻辑是相反的,

我有以下数组(这里显示为JSON):

我需要通过将
callTime
属性值最高的对象放在数组顶部来对该数组进行排序

我使用以下代码(基于对主题的解释):

这似乎与我的预期相反(请注意,
callTime
不同于零的唯一对象位于底部)

我想这里我可能遗漏了一些重要的东西,或者我只是被误导了,但也将函数体更改为:

return firstHandler.callTime - secondHandler.callTime
应该给出正确的结果,但似乎没有


我可能做错了什么?

您的排序功能不正确。逻辑是相反的,因为排序函数指示具有较小值
callTime
的元素位于第一位,而您希望较大值位于数组的顶部。而且,您总是返回-1或1,而从不返回0。当元素绑定时,它应该返回0

改写如下:

handlers.sort(function(firstHandler, secondHandler) {
    if (firstHandler.callTime > secondHandler.callTime) {
        return -1; // sort firstHandler to a LOWER index than secondHandler.
    } else if (firstHandler.callTime < secondHandler.callTime) {
        return 1; // sort secondHandler to a LOWER index than firstHandler.
    }

    return 0; // sort firstHandler and secondHandler as equal
});
handlers.sort(函数(firstHandler,secondHandler){
if(firstHandler.callTime>secondHandler.callTime){
return-1;//将firstHandler排序为比secondHandler更低的索引。
}else if(firstHandler.callTime
您的排序功能不正确。逻辑是相反的,因为排序函数指示具有较小值
callTime
的元素位于第一位,而您希望较大值位于数组的顶部。而且,您总是返回-1或1,而从不返回0。当元素绑定时,它应该返回0

改写如下:

handlers.sort(function(firstHandler, secondHandler) {
    if (firstHandler.callTime > secondHandler.callTime) {
        return -1; // sort firstHandler to a LOWER index than secondHandler.
    } else if (firstHandler.callTime < secondHandler.callTime) {
        return 1; // sort secondHandler to a LOWER index than firstHandler.
    }

    return 0; // sort firstHandler and secondHandler as equal
});
handlers.sort(函数(firstHandler,secondHandler){
if(firstHandler.callTime>secondHandler.callTime){
return-1;//将firstHandler排序为比secondHandler更低的索引。
}else if(firstHandler.callTime
谢谢!不知何故,我被数据的JSON表示法弄糊涂了,因为我不经意间认为“低”是“JSON表示法中的低”,而不是“低索引”。谢谢!不知何故,我对数据的JSON表示法感到困惑,因为我不经意间认为“较低”是“JSON表示法中的较低”,而不是“在较低的索引中”。
return firstHandler.callTime - secondHandler.callTime
handlers.sort(function(firstHandler, secondHandler) {
    if (firstHandler.callTime > secondHandler.callTime) {
        return -1; // sort firstHandler to a LOWER index than secondHandler.
    } else if (firstHandler.callTime < secondHandler.callTime) {
        return 1; // sort secondHandler to a LOWER index than firstHandler.
    }

    return 0; // sort firstHandler and secondHandler as equal
});