【发布时间】:2020-11-03 14:31:07
【问题描述】:
我尝试按日期对对象进行排序。我必须使用 es5,因为它在 angularjs 这是我尝试过的,但没有运气。
let objtemp = {
1: {
first: 0,
created: "2020-11-03T14:16:51.319Z"
},
2: {
first: 2,
created: "2020-11-03T14:01:32.084Z"
},
3: {
first: 2,
created: "2020-11-03T14:00:47.000Z"
}
};
let temp = Object.entries(objtemp);
temp.sort(function([a, aval], [b, bval]) {
return new Date(bval.created).getTime() - new Date(aval.created).getTime();
});
console.log(temp);
我得到的结果:
{1:{first:0, created: "2020-11-03T14:16:51.319Z"}, 2:{first:2, created: "2020-11-03T14:01:32.084Z"}, 3:{first:2, created:"2020-11-03T14:00:47.000Z"}}
预期结果是
{3:{first:2, created:"2020-11-03T14:00:47.000Z"},2:{first:2, created: "2020-11-03T14:01:32.084Z"},1:{first:0, created: "2020-11-03T14:16:51.319Z"}}
【问题讨论】:
-
“我得到的结果” 这绝对不是你得到的结果,因为你记录了
temp,这是一个数组,但你已经显示一个非数组对象。 -
为什么输入的是带有“数字”键的对象而不是实际的数组?
-
您的排序检查与您需要的相反......
return new Date(aval.created).getTime() - new Date(bval.created).getTime(); -
旁注:写
new Date(x).getTime()(其中x是一个字符串)的更简洁的方式是Date.parse(x)。他们做同样的事情,后者只是更少的工作。
标签: javascript object