для поведения цикла "TypeError: Невозможно прочитать свойство 'length' из неопределенного" - PullRequest
0 голосов
/ 05 января 2019

Я не нахожу ответа в ответах на этот вопрос, который уже задавался. Я не понимаю, почему консоль выдает эту ошибку " TypeError: Невозможно прочитать свойство 'длина' из неопределенного" , когда мой цикл for-Loop содержит это условие

  for (let i = 0; i <= res.length; i++) {
    arr.push(res[i].length);
  }

Без знака равенства работает.

Не понимаю, почему. Я думал, что установка я = 1 будет работать. Но это не так. Может ли кто-нибудь объяснить, пожалуйста, почему я получаю ошибку, когда дано условие

i>**=**res.length; (with equal sign)

Полный код

function findLongestWordLength(str) {
  var arr = [];
  var res = str.split(" ");
  for (let i = 1; i < res.length; i++) {
    arr.push(res[i].length);
  }

  return Math.max(...arr);
}

findLongestWordLength("May the force be with you");

Спасибо и счастливого нового года.

Ответы [ 3 ]

0 голосов
/ 05 января 2019

Массивы равны нулю в JavaScript.

Например: если у вас есть 3 числа в массиве var arr = [10,20,30], то индексы этих чисел будут 0 1, 2, т.е. вы можете получить доступ к 10 с arr[0], 20 с arr[1] и 30 с arr[2].

Обратите внимание, что длина этого массива будет 3. Поэтому, когда вы выполняете итерацию в цикле от 0 до длины, вы идете на один дополнительный индекс, поэтому вы получаете undefined. Либо перейдите от 0 to <= res.length - 1 или 0 to < res в вашем цикле.

0 голосов
/ 05 января 2019

Поскольку индекс массива всегда имеет длину - 1.

Вы можете сказать. Предположим, у вас есть массив длины 2

const ar = ["a", "b"]

и если вы проверите длину этого массива, он покажет 2 , но максимальный индекс этого массива равен 1 .

Таким образом, когда вы перебираете длину массива, он поднимается до индекса 2 и res[2] равен undefined

0 голосов
/ 05 января 2019

В основном индексы Array основаны на нуле.

Если вы зациклились до длины, последний индекс на единицу больше.

array = [1, 2, 3] // length === 3

Если вы зациклились до 3,

array[3]

вы получите undefined, или если элемент должен быть объектом, то вы получите вышеупомянутую ошибку.

...