Почему я получаю Невозможно прочитать свойство 'setsWith' из неопределенного в этом цикле for? - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь отсортировать массив по «версии», а затем определить все строки, которые начинаются с «iPad».

Следующий код ничего не регистрирует и возвращает ошибку.

orderedUsers: function () {
  let newarray = sortBy(this.jobs, 'version').reverse()
  for (let i in newarray) {
    if (i.version.startsWith('iPad')) {
      console.log(i.version);
    }
  }
  return newarray

ошибка:

TypeError: Cannot read property 'startsWith' of undefined

Если я уберу цикл for и просто добавлю:

orderedUsers: function () {
  let newarray = sortBy(this.jobs, 'version').reverse()
  return newarray

Список правильно отсортирован по версии. Это заставляет меня думать, что ошибка связана с тем, как я написал свой цикл for или оператор if.

Что я тут не так делаю.

Ответы [ 2 ]

0 голосов
/ 20 июня 2019

исправлено:

orderedUsers: function () {
  let newarray = sortBy(this.jobs, 'version').reverse()
  for (let i in newarray) {
    if (newarray[i].version.startsWith('iPad')) {
      console.log(newarray[i].version);
    }
  }
  return newarray
0 голосов
/ 20 июня 2019

Конструкция for...in не делает то, что вы думаете здесь.Он предназначен для перебора объектов.Так что в этом случае он обрабатывает newArray как объект, но с именами свойств в качестве индексов массива.Массивы в Javascript - это просто объекты с числовыми именами свойств.Более конкретно, если вы изменили свой код на:

for (let i in newarray) {
    if (i.version.startsWith('iPad')) {
      console.log(i);
    }
  }

Вы бы ясно увидели проблему.i - это число, а не объект задания.

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