按ISOString日期对JavaScript嵌套对象排序

按ISOString日期对JavaScript嵌套对象排序,javascript,date,object,Javascript,Date,Object,我有这个对象,我想返回一个按升序日期排序的新对象,考虑到起始时间是一个ISOString。(我也在使用“瞬间”)我该怎么做 const clinics = { "a0CW00000027OX3MAM": { "id": "a0CW00000027OX3MAM", "companyName": "Hendrick Medical Center", "startTime": "2018-08-10T05:30:00.000Z", }, "a0CW00000026g

我有这个对象,我想返回一个按升序日期排序的新对象,考虑到起始时间是一个ISOString。(我也在使用“瞬间”)我该怎么做

const clinics = {
  "a0CW00000027OX3MAM": {
    "id": "a0CW00000027OX3MAM",
    "companyName": "Hendrick Medical Center",
    "startTime": "2018-08-10T05:30:00.000Z",
  },
  "a0CW00000026gjJMAQ": {
    "id": "a0CW00000026gjJMAQ",
    "companyName": "ABC Manufacturing",
    "startTime": "2018-08-10T10:36:00.000Z",
  },
  "a0CW00000026gipMAA": {
    "id": "a0CW00000026gipMAA",
    "companyName": "ABC Manufacturing",
    "startTime": "2018-08-01T10:36:00.000Z",
  }
}

你的对象不是一个数组,所以如果不先将它转换成数组,你就不能对它进行真正的排序。下面是一个将其转换为数组,然后仅使用字段文本进行排序的示例,因为ISO将以这种方式进行良好排序

编辑我更新了它,添加了一个函数将其转换回对象

const诊所={
“A0CW00000027OX3AM”:{
“id”:“A0CW00000027OX3AM”,
“公司名称”:“亨德里克医疗中心”,
“开始时间”:“2018-08-10T05:30:00.000Z”,
},
“a0CW00000026gjJMAQ”:{
“id”:“a0CW00000026gjJMAQ”,
“公司名称”:“ABC制造业”,
“开始时间”:“2018-08-10T10:36:00.000Z”,
},
“a0CW00000026gipMAA”:{
“id”:“a0CW00000026gipMAA”,
“公司名称”:“ABC制造业”,
“开始时间”:“2018-08-01T10:36:00.000Z”,
}
}
功能比较(a、b){
if(a.startTimeb.startTime)
返回1;
返回0;
}
函数objectToArray(obj){
var keys=Object.keys(obj);
var-ret=[];
对于(变量i=0;ilog(arrayToObject(arr))以下内容将按开始时间按升序对诊所进行排序

  • 它的工作原理是首先使用将对象属性值转换为数组
  • 使用将值按升序排序
  • 最后,使用创建一个新对象
const诊所={
“A0CW00000027OX3AM”:{
“id”:“A0CW00000027OX3AM”,
“公司名称”:“亨德里克医疗中心”,
“开始时间”:“2018-08-10T05:30:00.000Z”,
},
“a0CW00000026gjJMAQ”:{
“id”:“a0CW00000026gjJMAQ”,
“公司名称”:“ABC制造业”,
“开始时间”:“2018-08-10T10:36:00.000Z”,
},
“a0CW00000026gipMAA”:{
“id”:“a0CW00000026gipMAA”,
“公司名称”:“ABC制造业”,
“开始时间”:“2018-08-01T10:36:00.000Z”,
}
};
const sorted=Object.values(诊所)
.sort((a,b)=>a.startTime>b.startTime)
.reduce((m,c)=>m.set(c.id,c),newmap());
for(让[key,value]为已排序的.entries()){
console.log(键、值);

}
ISO字符串的可能重复项在作为字符串排序时具有正确排序的优点。您尝试过按字符串值排序吗?可能重复“…按升序日期排序的新对象…”。你不能对一个对象的属性进行排序,它们是无序的。你不能保证对象属性的顺序,它们是无序的。@RobG,干杯。我想我在什么地方读到过,ES6+保证了
对象
属性排序,但我似乎弄错了。我更新了答案,改为使用
地图