Как я могу вернуть 'null', если массив пустой, а не неопределенный, используя метод .find с функциями стрелок? - PullRequest
0 голосов
/ 07 мая 2019

У меня есть функция, которая принимает массив объектов people и возвращает первый найденный объект из определенного массива. В данном случае - «isDoctor».

const doctors = [ 
      { name: "`Jack Jones`", isDoctor: false},
      { name: "John Smith", isDoctor: true},
      { name: "Louise Young", isDoctor: false},
      { name: "David Boyle", isDoctor: true},
      { name: "Lisa Carr", isDoctor: false },
     ];


function findFirstDoctor(people) {
return people.find(person => person.isDoctor === true)
}

Код, который я написал правильно, возвращает ниже; однако в сценарии, где есть пустой массив или когда все 'isDoctor' ложно; как бы я возвратил 'null', а не undefined?

Object {
  isDoctor: true,
  name: "John Smith"
}

Ответы [ 2 ]

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

Вы можете использовать ||, чтобы указать конкретное "ложное" значение:

function findFirstDoctor(people) {
  return people.find(person => person.isDoctor === true) || null;
}

(Также: я бы посоветовал не проводить явное тестирование с === до true, если только вы не действительно нужно из-за вашей модели данных. Если .isDoctor предназначен для логического флага, то все, что вам действительно нужно, это person => person.isDoctor.)

В любом случае добавление || null в конец дает преимуществофакта, что .find() вернет объект, если он что-то найдет, и это никогда не будет "ложным".Таким образом, единственный способ вычисления кода на дальней стороне || - это когда .find() возвращает undefined, так что вы можете заменить null.

Лично я считаю, что различие между null иundefined в большинстве случаев это просто еще одна хрупкая практика кодирования.Операторы == и !=, по сравнению с null или undefined, всегда обрабатывают оба как эквивалентные.

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

Если вы хотите использовать для этого .find, вам придется явно присваивать или возвращать null самостоятельно, если ничего не найдено:

const doctors = [ 
];

function findFirstDoctor(people) {
  const foundDoctor = people.find(person => person.isDoctor === true)
  return foundDoctor || null;
}

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