JS Second .sort разрывает первый .sort в цепочке - PullRequest
0 голосов
/ 02 октября 2018

У меня есть следующий код.Я хочу сначала отсортировать по фамилии, затем отсортировать по доступу, сохраняя алфавитную сортировку из первой функции

let sorted_list = employee_list
      .sort((a, b) => {
        let first = a.name.split(' ')[1].toUpperCase();
        let second = b.name.split(' ')[1].toUpperCase();

        return (first < second) ? -1 : (first > second) ? 1 : 0;
      })
      .sort((a, b) => {
        return b.coaching_access - a.coaching_access;
      })
      .map(this.renderEmployee);

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Сортировка применяется в полном списке.В вашем случае, я думаю, вы хотите что-то вроде:

let sorted_list = employee_list
  .sort((a, b) => {
    let first = a.name.split(' ')[1].toUpperCase();
    let second = b.name.split(' ')[1].toUpperCase();

    return (first < second) ? -1 : (first > second) ? 1 : b.coaching_access - a.coaching_access;
  })
  .map(this.renderEmployee);

Таким образом, свойство доступа коучинга используется для развязывания одинаковых имен.

0 голосов
/ 02 октября 2018

Объединить 2 вида как следующие

let sorted_list = employee_list
  .sort((a, b) => {
    let first = a.name.split(' ')[1].toUpperCase();
    let second = b.name.split(' ')[1].toUpperCase();
    return first > second || b.coaching_access - a.coaching_access;
  })
  .map(this.renderEmployee);

Пример

let employee_list = [{name: "a b", coaching_access : 1}, {name: "a a", coaching_access : 2}, {name: "a c", coaching_access : 1}, {name: "a a", coaching_access : 1}, {name: "a a", coaching_access : 3}]

employee_list
  .sort((a, b) => {
    let first = a.name.split(' ')[1].toUpperCase();
    let second = b.name.split(' ')[1].toUpperCase();
    return first > second || b.coaching_access - a.coaching_access;
});

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