Сортировать несколько ключей массива в порядке возрастания и убывания, строка с номером - PullRequest
0 голосов
/ 16 мая 2018

У меня есть массив объектов JavaScript:

Это не повторяющийся вопрос.Потому что у меня есть массив объектов, который имеет 2 ключа (key, count).Я хотел отсортировать key в порядке возрастания (это строка ) И value в порядке убывания (что составляет число ).

 var array = [
  {"count":7,"key":"a"},
  {"count":10,"key":"b"},
  {"count":5,"key":"c"},
  {"count":10,"key":"a"},
  {"count":3,"key":"d"}
];

ЖелаемыйВыход:

     var array = [
      {"count":10,"key":"a"},
      {"count":10,"key":"b"},
      {"count":7,"key":"a"},
      {"count":5,"key":"c"},
      {"count":3,"key":"d"}
    ];

var array = [{"count":7,"key":"a"},{"count":10,"key":"b"},{"count":5,"key":"c"},{"count":10,"key":"a"},{"count":3,"key":"d"}];

console.log(array.sort((a, b) => (b.count - a.count)));

key сортировка по по возрастанию

count сортировка по по убыванию

Я использовал array.sort((a, b) => (b.count - a.count)) метод для сортировки счетчиков.но, не могу понять, как отсортировать оба ключа объекта.

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Вы должны использовать логический || оператор в сочетании с функцией localeCompare.

|| оператор будет рассматривать только второй компонент, если результат b.count - a.count равен ноль .

var array = [{"count":7,"key":"a"},{"count":10,"key":"b"},{"count":5,"key":"c"},{"count":10,"key":"a"},{"count":3,"key":"d"}];

console.log(array.sort((a, b) => b.count - a.count || a.key.localeCompare(b.key)));
0 голосов
/ 16 мая 2018

Попробуйте выполнить

var array = [{"count":7,"key":"a"},{"count":10,"key":"b"},{"count":5,"key":"c"},{"count":10,"key":"a"},{"count":3,"key":"d"}];

console.log(array.sort((a, b) => {
  if(a.count === b.count) return a.key.localeCompare(b.key);
  return b.count - a.count;
}));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...