基于多个参数对一组对象进行排序(一个参数作为日期)

时间:2017-11-09 17:15:38

标签: javascript arrays sorting

我有一个JavaScript对象数组:

var objs = [ 
    { key: 10, date: Thu Nov 09 2017 22:30:08 GMT+0530  },
    { key: 10, date: Thu Oct 10 2017 22:30:08 GMT+0530  },
    { key: 20, date: Thu Dec 09 2017 22:30:08 GMT+0530  }
];

并尝试获得这样的结果

var objs = [ 
    { key: 20, date: Thu Dec 09 2017 22:30:08 GMT+0530  },
    { key: 10, date: Thu Oct 10 2017 22:30:08 GMT+0530  },
    { key: 10, date: Thu Nov 09 2017 22:30:08 GMT+0530  }
];

数组应根据键和日期排序,键应按降序排序,日期应根据升序排序,当且仅当键相同时。

我怎么能做到这一点?

这里的日期是Date对象,因此需要以毫秒为单位考虑日期而不是字符串

1 个答案:

答案 0 :(得分:2)

要按降序对数字进行排序,您可以使用比较函数,例如:

function (a, b) { return b - a; }

如果您想进行备份比较,请使用||,以便在第一次比较产生0时,您可以使用备份比较。要按升序比较日期,请使用a - b

objs.sort(function (a, b) {
  return b.key - a.key || a.date - b.date; 
});