javascript - 对象数组排序不起作用

标签 javascript node.js reactjs

在 React 中,我有一个对象数组,我试图对其进行排序,这些对象具有 createdAt 属性。然而,这种排序似乎不能正常工作,因为有些排序是错误的。我已经在 Node.js 中编写了以下代码用于测试...任何帮助将不胜感激。

const moment = require('./node_modules/moment/moment.js')

const sortObjects = () => {
  const objects = [
    {id: "cje633i3v03wl0130lsse3zev", createdAt: "2018-02-27T20:07:49.000Z"},
    {id: "cjeqtudhd000u0149skzacpq5", createdAt: "2018-03-14T08:31:57.000Z"},
    {id: "cje633goc03vn01309m2iocas", createdAt: "2018-02-27T20:07:48.000Z"},
    {id: "cje633k1z03ww0130ce27niez", createdAt: "2018-02-27T20:07:52.000Z"},
    {id: "cje633k3303x50130n1a7vnft", createdAt: "2018-02-27T20:07:52.000Z"},
    {id: "cje633k5b03xa0130m07ndgpn", createdAt: "2018-02-27T20:07:52.000Z"},
    {id: "cje633k2y03x10130q1076pq4", createdAt: "2018-02-27T20:07:52.000Z"},
    {id: "cje633k0b03wq0130bmg0t6rd", createdAt: "2018-02-27T20:07:52.000Z"},
    {id: "cje633gmp03ve0130xu314ti4", createdAt: "2018-02-27T20:07:47.000Z"},
    {id: "cje633i2x03wd0130cqk5sdap", createdAt: "2018-02-27T20:07:49.000Z"},
    {id: "cje633i1w03w60130rfpngz0b", createdAt: "2018-02-27T20:07:49.000Z"},
    {id: "cje633i1u03w301307s44jfyy", createdAt: "2018-02-27T20:07:49.000Z"},
    {id: "cje633i3i03wh0130f3t1iyl4", createdAt: "2018-02-27T20:07:49.000Z"},
    {id: "cje633gp803vw0130frck18wq", createdAt: "2018-02-27T20:07:48.000Z"},
    {id: "cje633gos03vs0130tzv7xfpe", createdAt: "2018-02-27T20:07:48.000Z"},
    {id: "cje633gnu03vj0130nnt4abin", createdAt: "2018-02-27T20:07:47.000Z"},
    {id: "cje633enx03uo0130qw0r35l6", createdAt: "2018-02-27T20:07:45.000Z"},
    {id: "cje633eot03uw0130r42aqbox", createdAt: "2018-02-27T20:07:45.000Z"},
    {id: "cje633eou03uy0130hdwg0uvn", createdAt: "2018-02-27T20:07:45.000Z"},
    {id: "cje633epl03v30130hsugr6vp", createdAt: "2018-02-27T20:07:45.000Z"},
    {id: "cje633eps03v70130xr826vf2", createdAt: "2018-02-27T20:07:45.000Z"},
  ]
  objects.sort( (a, b) => moment.utc(b.createdAt).isAfter(moment.utc(a.createdAt)));
  console.log('objects',objects)
}

sortObjects()

更新 - 这是输出

[ { id: 'cje633i1w03w60130rfpngz0b', createdAt: '2018-02-27T20:07:49.000Z' },
   { id: 'cje633i3v03wl0130lsse3zev', createdAt: '2018-02-27T20:07:49.000Z' },
   { id: 'cje633i3i03wh0130f3t1iyl4', createdAt: '2018-02-27T20:07:49.000Z' },
   { id: 'cje633k1z03ww0130ce27niez', createdAt: '2018-02-27T20:07:52.000Z' },
   { id: 'cje633k3303x50130n1a7vnft', createdAt: '2018-02-27T20:07:52.000Z' },
   { id: 'cje633k5b03xa0130m07ndgpn', createdAt: '2018-02-27T20:07:52.000Z' },
   { id: 'cje633k2y03x10130q1076pq4', createdAt: '2018-02-27T20:07:52.000Z' },
   { id: 'cje633k0b03wq0130bmg0t6rd', createdAt: '2018-02-27T20:07:52.000Z' },
   { id: 'cje633i1u03w301307s44jfyy', createdAt: '2018-02-27T20:07:49.000Z' },
   { id: 'cje633i2x03wd0130cqk5sdap', createdAt: '2018-02-27T20:07:49.000Z' },
   { id: 'cjeqtudhd000u0149skzacpq5', createdAt: '2018-03-14T08:31:57.000Z' },
   { id: 'cje633goc03vn01309m2iocas', createdAt: '2018-02-27T20:07:48.000Z' },
   { id: 'cje633gp803vw0130frck18wq', createdAt: '2018-02-27T20:07:48.000Z' },
   { id: 'cje633gos03vs0130tzv7xfpe', createdAt: '2018-02-27T20:07:48.000Z' },
   { id: 'cje633gmp03ve0130xu314ti4', createdAt: '2018-02-27T20:07:47.000Z' },
   { id: 'cje633gnu03vj0130nnt4abin', createdAt: '2018-02-27T20:07:47.000Z' },
   { id: 'cje633enx03uo0130qw0r35l6', createdAt: '2018-02-27T20:07:45.000Z' },
   { id: 'cje633eot03uw0130r42aqbox', createdAt: '2018-02-27T20:07:45.000Z' },
   { id: 'cje633eou03uy0130hdwg0uvn', createdAt: '2018-02-27T20:07:45.000Z' },
   { id: 'cje633epl03v30130hsugr6vp', createdAt: '2018-02-27T20:07:45.000Z' },
   { id: 'cje633eps03v70130xr826vf2', createdAt: '2018-02-27T20:07:45.000Z' } ]

最佳答案

you should return a number 时,您从排序回调中返回 truefalse .除此之外,您不需要 moment.js 来按这些日期排序。你可以只使用:

objects.sort( (a, b) => new Date(a.createdAt) - new Date(b.createdAt));

按升序排序,或翻转ab按降序排序。

关于javascript - 对象数组排序不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49305811/

相关文章:

javascript - 检查 react 元素是否为空

node.js - 如何在 Reactjs 中加密请求负载

javascript - 用 javascript 进行多次替换

html - ExpressJS/NodeJS 重定向图像

asp.net - asp.net 网站性能缓慢,从哪里开始寻找问题?

windows - Node.js 无法在 Windows 上安装全局 npm 包(不是路径)

javascript - 需要在MySQL中查找返回某个结果的查询

javascript - 每个附件我都需要附上pdf或word或jpg图标

php - 如何将 $_POST 值放入 javascript 确认框中

javascript - 捕获异常 : Error: write after end after upgrading Node version