Сортировать массив объектов по значению свойства. - PullRequest
0 голосов
/ 22 апреля 2020

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

const list = [{
  "ID": "3",
  "Status": "NEW"
},
{
  "ID": "1",
  "Status": "Open",
},
{
  "ID": "9",
  "Status": "NEW",
},
{
  "ID": "5",
  "Status": "NEW",
},
{
  "ID": "0",
  "Status": "Closed",
},
{
  "ID": "6",
  "Status": "Closed",
}];

Я хочу отсортировать по статусу .. согласно раскрывающемуся выбору. раскрывающийся список Array содержит [New, Closed, Open]. если я выбираю «Новый», статус с «Новым» должен быть в верхней части списка, также как и «Открыть».

Я пробовал сортировку списка, как показано ниже, в порядке возрастания и убывания, не так, как я хочу.

list.sort(
  function(a, b) {
    return a.Status < b.Status ? -1 : a.Status > b.Status ? 1 : 0;
});

Пожалуйста, предложите, как можно передать значение свойства. Заранее спасибо.

Ответы [ 2 ]

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

Может быть, вы можете использовать фильтр, чтобы показать все значения списка, которые содержат NEW или Open

const list = [{
  "ID": "3",
  "Status": "NEW"
},
{
  "ID": "1",
  "Status": "Open",
},
{
  "ID": "9",
  "Status": "NEW",
},
{
  "ID": "5",
  "Status": "NEW",
},
{
  "ID": "0",
  "Status": "Closed",
},
{
  "ID": "6",
  "Status": "Closed",
}];

const ans = list.filter(e => e.Status === 'NEW');
console.log(ans);
0 голосов
/ 22 апреля 2020

Возможно, вы ищете

const order = ["NEW", "Closed", "Open"];
list.sort(function(a, b) {
    return order.indexOf(a.Status) - order.indexOf(b.Status);
});

(Это работает только при условии, что все значения .Status находятся в массиве order)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...