js中sort方法无法达到预期效果

我想把下面数组按时间排序后展示出来,使用sort方法始终无法达到期望效果,不知原因为何?求解答

let arr = [{
    "applyId": "1909101016056138768202215",
    "createTime": "2019-09-10 10:16:02",
    "status": 0,
    "userName": "李某某"
        }, {
    "applyId": "1909101027225522012190631",
    "createTime": "2019-09-10 10:07:19",
    "status": 1,
    "userName": "李某某"
        }, {
    "applyId": "1909101027225562448906248",
    "createTime": "2019-09-10 10:27:19",
    "status": 3,
    "userName": "李某某"
        }]

function compare(p) { //这是比较函数
    return function (m, n) {
        var a = new Date(m[p]);
        var b = new Date(n[p]);
        return a > b;
    }
}
arr.sort(compare("createTime"))
console.log(arr)
阅读 2.9k
2 个回答

compare需要返回一个number类型。

  1. 如果 compareFunction(a, b) 小于 0 ,那么 a 会被排列到 b 之前;
  2. 如果 compareFunction(a, b) 等于 0 , a 和 b 的相对位置不变。备注: ECMAScript 标准并不保证这一行为,而> 且也不是所有浏览器都会遵守(例如 Mozilla 在 2003 年之前的版本);
  3. 如果 compareFunction(a, b) 大于 0 , b 会被排列到 a 之前。
  4. compareFunction(a, b) 必须总是对相同的输入返回相同的比较结果,否则排序的结果将是不确定的。
return a > b ? -1 : 1;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题