按日期时间对嵌套对象进行排序无法正常工作

时间:2020-04-25 14:12:21

标签: javascript arrays sorting javascript-objects

我在按其时间戳对嵌套对象进行排序时遇到了一些麻烦。我希望能有所帮助...

这是该对象的外观以及我到目前为止所拥有的...

useEffect(() => {
if (realtime.length) {
  let unorderedmessage = realtime.concat(messages);
  const orderedMessages = unorderedmessage
    .slice()
    .sort((a, b) => new Date(a.createdAt) - new Date(b.createdAt));
  setMessages(orderedMessages);
}
}, [realtime]);


[
Object {
  "_id": "a16edcb7-17e1-46ea-b8ce-5ec312d5eb6c",
  "createdAt": 2020-04-23T01:51:48.000Z,
  "index": 1,
  "key": "cid-1710824786",
  "receiver": Array [
    "OUloNoRKdIeyhNFcAAB6VLrZ5yH2",
  ],
  "text": "2–> Olivia to Mike",
  "user": Object {
    "_id": "lTONqS9O00PhkxwHD2EYs05EMwu2",
    "avatar": "123",
  },
},
Object {
  "_id": "5ef28d42-6f7c-45eb-a5e1-59ca700f56b7",
  "createdAt": 2020-04-23T02:01:52.000Z,
  "index": 1,
  "key": "cid-1710824786",
  "receiver": Array [
    "OUloNoRKdIeyhNFcAAB6VLrZ5yH2",
  ],
  "text": "4–> Olivia to mike",
  "user": Object {
    "_id": "lTONqS9O00PhkxwHD2EYs05EMwu2",
    "avatar": "123",
  },
},
Object {
  "_id": "1e07873f-f010-4e9d-be17-9bcb7793695b",
  "createdAt": 2020-04-23T02:02:06.000Z,
  "index": 1,
  "key": "cid-1710824786",
  "receiver": Array [
    "lTONqS9O00PhkxwHD2EYs05EMwu2",
  ],
  "text": "5–> mike to Olivia",
  "user": Object {
    "_id": "OUloNoRKdIeyhNFcAAB6VLrZ5yH2",
    "avatar": "123",
  },
},
Object {
  "_id": "5fecafc3-c608-4156-b88c-f6c57e8e9977",
  "createdAt": 2020-04-23T02:01:20.000Z,
  "index": 1,
  "key": "cid-1710824786",
  "receiver": Array [
    "OUloNoRKdIeyhNFcAAB6VLrZ5yH2",
  ],
  "text": "3–> Olivia to Mike",
  "user": Object {
    "_id": "lTONqS9O00PhkxwHD2EYs05EMwu2",
    "avatar": "123",
  },
},
Object {
  "_id": "fae07391-9968-432a-8a39-0c1be0d7e9ac",
  "createdAt": 2020-04-23T01:51:41.000Z,
  "index": 0,
  "key": "cid-1710824786",
  "receiver": Array [
    "lTONqS9O00PhkxwHD2EYs05EMwu2",
  ],
  "text": "1–> mike to Olivia",
  "user": Object {
    "_id": "OUloNoRKdIeyhNFcAAB6VLrZ5yH2",
    "avatar": "123",
  },
},
],

消息仍然乱七八糟,所以我确定我写的排序功能不正确。我正在阅读这些教程和文档,这似乎是正确的...。 https://www.geeksforgeeks.org/sort-an-object-array-by-date-in-javascript/ https://flaviocopes.com/how-to-sort-array-by-date-javascript/ How to sort an array by a date property

我还尝试过显式编写如下函数:

  let unorderedmessage = realtime.concat(messages);
  unorderedmessage.sort(function(a, b) {
    return new Date(b.createdAt) - new Date(a.createdAt);
  });
  setMessages(unorderedmessage);

但仍然没有运气。有人可以看到我在做什么错吗?

1 个答案:

答案 0 :(得分:0)

对我来说,魅力无穷:https://playcode.io/583725/ 不能成为您的对象变量定义中的问题吗? 您无需指定Object,就足够了:

const myNewObject = {firstKey: 'firstValue', secondKeys: 'secondValue'}

但是,如果这样做,则必须使用new关键字来创建它:

const myNewObject = new Object {firstKey: 'firstValue', secondKeys: 'secondValue'}

相关问题