Чем отличаются эти два фильтра? - PullRequest
0 голосов
/ 22 апреля 2019

Что отличается между этими двумя блоками кода, результат результата одинаков. Кто-нибудь может мне помочь и объяснить разницу?

  const sortPeople = people.sort((first, last) => {
  const [firstName, lastName] = first.split(",");
  first.lastName > last.lastName ? 1 : -1;
});
  console.log(sortPeople);

второй код

  const alpha = people.sort((lastOne, nextOne) => {
  const [aLast, aFirst] = lastOne.split(', ');
  const [bLast, bFirst] = nextOne.split(', ');
  return aLast > bLast ? 1 : -1;
});
console.log(alpha);

образец кода песочницы

Ответы [ 3 ]

1 голос
/ 22 апреля 2019

Вам необходимо вернуть разницу двух фамилий, например

people.sort((a, b) => a.split(', ')[0].localeCompare(b.split(', ')[0]));
0 голосов
/ 22 апреля 2019

Они никогда не получат одинаковых результатов!

Для первого кода вы заметите следующее

const [firstName, lastName] = first.split (","); //вызовет ошибку, если вы сортируете массив объектов

first.lastName> last.lastName?1: -1;// вызовет ошибку, если вы сортируете массив строк

, и вам также следует обернуть его с помощью оператора return, если вы введете код перед возвратом, JavaScript не добавит неявный возврат в такойcase

return (first.lastName> last.lastName? 1: -1);

People - это массив объектов, содержащих фамилии, поэтому он может обращаться к first lastName и второму lastName From«первый» и «последний» объекты передаются в функцию-стрелку напрямую.

Массив людей должен быть [{lastName: "john"}, {lastName: "brad"}, ....] объектомможет также содержать другие свойства, такие как firstName, age и т. д., чтобы использовать его таким образом.


Хотя для второго кода People является массивом строк [«last, first»,"Доу, Джон" ....]

const [aLast, aFirst] = lastOne.split (',');const [bLast, bFirst] = nextOne.split (',');

lastOne и nextOne, переданные в функцию стрелки, представляются как строки, содержащие как «last, first», разделенные запятой, так и после разделенияразрушают массив, который будет результатом разделения строк «lastOne» и «nextOne», и используют их lastName при сортировке, используя 2 новые переменные, которые будут содержать значения для проверки

0 голосов
/ 22 апреля 2019
     const sortPeople = people.sort((first, last) => {
  const [firstName, lastName] = first.split(",");
  first.lastName > last.lastName ? 1 : -1;
});
  console.log(sortPeople);

над частью ничего не делает, всегда возвращает -1.потому что первый и последний или нет объекта, поэтому вы не можете сделать first.lastName.Но второй код.

const alpha = people.sort((lastOne, nextOne) => {
  const [aLast, aFirst] = lastOne.split(', ');
  const [bLast, bFirst] = nextOne.split(', ');
  return aLast > bLast ? 1 : -1;
});
console.log(alpha);

выполняет сортировку строк по их значениям перед запятой.но так как массив уже отсортирован, он всегда возвращает -1.Вот почему оба кода блока имеют одинаковый результат.

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