Как Return / -1 работает / означает в array.sort (a> b) (JS)?Спрашивать о процессе массива методов. - PullRequest
0 голосов
/ 11 мая 2019

Я не могу понять, что означает возврат 1 или -1 в array.sort в js.

    const hola = [0, 4, 10, 60, 5]
const holaSorted = hola.sort(function(a,b) {
    if (a>b) {
        return -1;
    } else {
    return 1;
  } 
});
console.log(holaSorted);

console.table (holaSorted); `

[60, 10, 5, 4, 0]

1 Ответ

1 голос
/ 11 мая 2019

Прежде всего, как обсуждалось выше, описание MDN очень хорошее.

Но мы можем упростить здесь:

Когда мы вызываем sort, это позволяет нам предоставить function для оценки двух elements из array в любой момент времени.

function должно вернуть:

  • a negative значение, если a < b
  • a positive значение, если a > b
  • и 0, если a === b.

Функция sort будет затем использовать это значение для упорядочивания этих двух элементов соответственно.

// Number ordering is very straight forward. 
const hola = [0, 4, 10, 60, 5]
const holaSorted = hola.sort((a,b) => a-b); 
console.log(holaSorted);

// reverse the order.
const holaSorted2 = hola.sort((a,b) => b-a);
console.log(holaSorted);

Но не все - это простое число, часто мы хотим отсортировать объекты, и здесь становится более важным предоставить собственный оценщик.

Ниже мы сортируем, используя name, и нам нужно передать обратно 1 || -1 || 0 на основе сравнения строк.

const people = [
  {
    name: 'Bob',
    age: 20
  },
  {
    name: 'Anne',
    age: 50,
  },
  {
    name: 'Terry',
    age: 5
  }
];

// Order by name
const byName = people.sort((a,b) => (a.name < b.name) ? -1 : (a.name > b.name) ? 1 : 0);

console.log(byName);

// Order by age
const byAge = people.sort((a, b) => a.age-b.age);

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