【问题标题】:How to sort nested obj javascript如何对嵌套的obj javascript进行排序
【发布时间】: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


【解决方案1】:
temp.sort(function([a, aval], [b, bval]) {
  return new Date(aval.created).getTime() - new Date(bval.created).getTime();
});

问题是排序检查与我需要的相反。 感谢@epascarello

【讨论】:

    猜你喜欢
    • 2016-07-01
    • 1970-01-01
    • 2012-06-22
    • 1970-01-01
    • 2019-09-30
    • 1970-01-01
    • 2016-07-09
    • 1970-01-01
    • 2020-04-29
    相关资源
    最近更新 更多