Массив объектов не сортируется по свойству - PullRequest
1 голос
/ 21 февраля 2020

Я пытаюсь отсортировать массив объектов по свойству. Я не могу узнать, где я делаю ошибку, но это совсем не сортирует. Не могли бы вы мне помочь . Вот проверьте мою песочницу: https://codesandbox.io/s/pedantic-villani-361wh

const data = [{
    key: 33049999926180,
    sn: 33049999926180
  },
  {
    key: 33050000960170,
    sn: 33050000960170
  },
  {
    key: 33050001827158,
    sn: 33050001827158
  },
  {
    key: 33050002745147,
    sn: 33050002745147
  },
  {
    key: 33052513640473,
    sn: 33052513640473
  }
];

const handleClick = (data) => {
  let temp = data;
  temp.sort((a, b) => (a.sn < b.sn ? -1 : a.sn > b.sn ? 1 : 0));
  console.log(temp); // check console
};
handleClick(data)

1 Ответ

0 голосов
/ 21 февраля 2020

Причина, по которой вы должны использовать - вместо <, задокументирована в MDN

Для сравнения чисел вместо строк функция сравнения может просто вычесть b из a

Этого должно быть достаточно:

const data = [
  {
    key: 33049999926180,
    sn: 33049999926180
  },
  {
    key: 33050000960170,
    sn: 33050000960170
  },
  {
    key: 33050001827158,
    sn: 33050001827158
  },
  {
    key: 33050002745147,
    sn: 33050002745147
  },
  {
    key: 33052513640473,
    sn: 33052513640473
  }
];

const handleClick = data => [...data].sort((a, b) => b.sn - a.sn);
const sortedData = handleClick(data);
console.log(sortedData);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...