按日期为键的日期对对象数组进行排序

时间:2016-09-16 14:22:21

标签: javascript arrays sorting date

因此,请考虑以下date: array

对象数组的图像

enter image description here

很明显,这个数组是乱序的,有大量的对象数组排序的例子,其中有一个日期键,其值为日期。但似乎没有例子我可以对这个对象的数组进行排序,其中对象的关键是日期。

思想吗

answer是我能找到的最接近的答案,但我的日期也是如此,因为你可以看到对象的关键字。

2 个答案:

答案 0 :(得分:0)

考虑:

data = [
    {[new Date(2014, 1, 2)]: 1},
    {[new Date(2013, 2, 3)]: 1},
    {[new Date(2016, 3, 4)]: 1},
    {[new Date(2014, 4, 5)]: 1},
    {[new Date(2015, 1, 6)]: 1},
    {[new Date(2016, 2, 2)]: 1},
    {[new Date(2014, 3, 3)]: 1},
    {[new Date(2015, 4, 4)]: 1},
    {[new Date(2013, 5, 5)]: 1}
];

result = data
    .map(obj => [Date.parse(Object.keys(obj)[0]), obj])
    .sort((x, y) => x[0] - y[0])
    .map(x => x[1]);


console.log(result);

这使用了一种名为“decorate-sort-undecorate”的技术Schwartzian transform

答案 1 :(得分:0)

替代georg的方式。



data = [
    {[new Date(2014, 1, 2)]: 1},
    {[new Date(2013, 2, 3)]: 1},
    {[new Date(2016, 3, 4)]: 1},
    {[new Date(2014, 4, 5)]: 1},
    {[new Date(2015, 1, 6)]: 1},
    {[new Date(2016, 2, 2)]: 1},
    {[new Date(2014, 3, 3)]: 1},
    {[new Date(2015, 4, 4)]: 1},
    {[new Date(2013, 5, 5)]: 1}
];

data.sort((a, b) =>
          Date.parse(Object.keys(a)[0]) -
          Date.parse(Object.keys(b)[0]))

console.log(data)