如何使用数组中的 moment.js 按降序对日期进行排序

无脚鸟

试图做分页,

我有一个像下面这样的数组

https://drive.google.com/open?id=1iNsIKZs8IyZbm8M1N77PAkTjqSqFugKo

在数组中,有一个关于创建时间的 createdAt 对象,格式为 moment.js

我想按降序排序,以便最新的帖子先出现

postActions.js

firestore
  .collection("posts")
  .add({
    ...post,
    authorFirstName: profile.firstName,
    authorLastName: profile.lastName,
    authorId: authorId,
    createdAt: new Date()
  })

postReducer.js

case STORE_POSTS_SUCCESS:
  const snapshot = action.payload;
  const array = [];
  snapshot.forEach(doc => {
    //  console.log(doc);
    //  console.log(doc.id);
    array.push({
      id: doc.id,
      authorId: doc.data().authorId,
      authorFirstName: doc.data().authorFirstName,
      authorLastName: doc.data().authorLastName,
      title: doc.data().title,
      content: doc.data().content,
      createdAt: moment(doc.data().createdAt.toDate()).format(
        "MMMM Do YYYY, h:mm:ss a"
      )
    });
  });

  console.log(array);
  return {
    ...state,
    //  posts: array.slice(0)
    posts: array
  };
道格史蒂文森

您使用时刻格式化日期的方式实际上非常不利于排序。该字符串不会按时间顺序自然排序。

如果要按日期对记录进行排序,最好仅存储该时间点的日期整数值。整数很容易排序。在实时数据库中存储时间的典型方法是使用自 unix epoch 以来的毫秒数,这在现代操作系统上非常普遍。在 JavaScript 中,您可以使用Date.now(). 这比大多数其他形式的日期表示形式更受欢迎。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章