Как исправить «Не удается прочитать свойство неопределенного»? - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь определить, какой объект в массиве имеет самое длинное имя, и записываю этот объект на консоль.

Я не могу получить доступ к длине свойства name в моем операторе if.

const instructorWithLongestName = function(instructors) {
  let longest;
  for (let i = 0; i < instructors.length; i++) {
    if (instructors[i].name.length > longest.length) {
      longest = instructors[i];
    }
  }
  return longest;
};

console.log(instructorWithLongestName([
  {name: "Samuel", course: "iOS"},
  {name: "Jeremiah", course: "Web"},
  {name: "Ophilia", course: "Web"},
  {name: "Donald", course: "Web"}
]));
console.log(instructorWithLongestName([
  {name: "Matthew", course: "Web"},
  {name: "David", course: "iOS"},
  {name: "Domascus", course: "Web"}
]));

I expect the output of
{name: "Jeremiah", course: "Web"}
{name: "Domascus", course: "Web"}

но я получаю сообщение о том, что оно не может прочитать свойство '.length'

Ответы [ 2 ]

0 голосов
/ 01 мая 2019

Спасибо за помощь, ребята!Изменив самое длинное значение на первый объект и начав цикл с 1, я смог вызвать правильные свойства.

const instructorWithLongestName = function(instructors) {
  let longest = instructors[0];
  for (let i = 1; i < instructors.length; i++) {
    if (instructors[i].name.length > longest.name.length) {
      longest = instructors[i];
    }
  }
  return longest;
};
0 голосов
/ 01 мая 2019

Вы можете использовать

let longest = Number.MIN_SAFE_INTEGER;

для установки самого длинного на наименьшее безопасное целое число , поскольку минимальная длина равна 0 (число элементов элементов равно нулю)
Или просто установите его на 0:

let longest = 0

Одно крошечное «замечание» - как @Jaromanda X упомянул в комментарии - let без указания значения приведет к undefined, например:

let test1;
let test2 = 'some random string';
let test3 = 4;

// comments represent output of corresponding command  
console.log(test1); // undefined
console.log(test2); // some random string
console.log(test3); // 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...