JavaScript,按最新日期和时间值排序对象

时间:2017-10-26 08:41:42

标签: javascript arrays sorting

初学者。
我想按日期和时间值对整个对象数组进行排序。最新的日期和时间。

我的问题。
不确定如何按日期和时间对不同的键值进行排序。
示例:我的关键值为开始停止转为。我想按日期和时间对此进行排序。我仍然希望将键值保留为对该值的引用。

{
  "start 0": "2017-10-24T03:15:36Z",
  "start 1": "2017-10-24T09:13:44Z",
  "start 2": "2017-10-24T15:41:27Z",
  "stop 0": "2017-10-23T21:40:27Z",
  "stop 1": "2017-10-24T03:47:20Z",
  "stop 2": "2017-10-24T09:42:34Z",
  "turn 0": "2017-10-22T16:02:51Z",
  "turn 1": "2017-10-23T22:13:56Z",
  "turn 2": "2017-10-23T03:19:20Z"
}

我正在使用moment.js

提前致谢

4 个答案:

答案 0 :(得分:0)

{
  "start 0": "2017-10-24T03:15:36Z",
  "start 1": "2017-10-24T09:13:44Z",
  "start 2": "2017-10-24T15:41:27Z",
  "stop 0": "2017-10-23T21:40:27Z",
  "stop 1": "2017-10-24T03:47:20Z",
  "stop 2": "2017-10-24T09:42:34Z",
  "turn 0": "2017-10-22T16:02:51Z",
  "turn 1": "2017-10-23T22:13:56Z",
  "turn 2": "2017-10-23T03:19:20Z"
}

是一个对象,由于javascript对象没有顺序,因此排序没有意义

答案 1 :(得分:0)

你拥有的是一个对象,但如果我们假设你有以下数组: var datesArr = [“2017-10-24T03:15:36Z”,“2017-10-24T03:15:36Z”,“2017-10-24T15:41:27Z”];

为了对这些进行排序,您需要的是: datesArr.sort((a,b)=>新日期(b) - 新日期(a))

答案 2 :(得分:0)

试试这个

res =
{ 'start 0': '2017-10-24T03:15:36Z',
  'start 1': '2017-10-24T09:13:44Z',
  'start 2': '2017-10-24T15:41:27Z',
  'stop 0': '2017-10-23T21:40:27Z',
  'stop 1': '2017-10-24T03:47:20Z',
  'stop 2': '2017-10-24T09:42:34Z',
  'turn 0': '2017-10-22T16:02:51Z',
  'turn 1': '2017-10-23T22:13:56Z',
  'turn 2': '2017-09-23T03:19:20Z' }

// console.log(res);
myarr = []
Object.keys(res).forEach( key => {
   console.log(key+" = "+res[key]);
   myarr.push({ 'key': key, 'stamp': res[key]});
}
);
// console.log(myarr);
myarr.sort(function(a, b) { 
    return new Date(a.stamp) - new Date(b.stamp) > 0;
})

// console.log(sorted);
for(var i in myarr){

  console.log(myarr[i]);

}

repl link

答案 3 :(得分:0)

var array=[{
  "date": "2017-10-24T03:15:36Z"},
           {"date": "2017-10-24T09:13:44Z"},
           {"date": "2017-10-24T15:41:27Z"},
           {"date": "2017-10-23T21:40:27Z"},{
  "date": "2017-10-23T03:19:20Z"}
]

array.sort(function(a,b){
  return new Date(b.date) - new Date(a.date);
});

尝试这样的事情,每个对象中的键应该相同