Сортировка объекта гнезда по дате и времени не работает должным образом - PullRequest
0 голосов
/ 25 апреля 2020

У меня проблемы с сортировкой вложенного объекта по его отметке времени. Я надеялся на некоторую помощь ...

Вот как выглядит этот объект, и что я имею до сих пор ...

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/ Как отсортировать массив по свойству даты

Я также пытался явно написать функцию, например:

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

, но все равно не повезло. Кто-нибудь может увидеть, что я делаю не так?

1 Ответ

0 голосов
/ 25 апреля 2020

Работает для меня как прелесть: https://playcode.io/583725/ Не может быть проблема в определении вашей переменной объекта? Вам не нужно указывать Object, этого достаточно:

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

Но если вы это сделаете, вы должны создать его с ключевым словом new:

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

...