PhpStorm жалуется на добавление значения ключа в массив

#javascript #phpstorm #webstorm

#javascript #phpstorm #webstorm

Вопрос:

У меня есть следующий код:

             let self = this;
          
            for (const questionIndex in self.questions) {
                self.givenAnswers[questionIndex] = "";
            }
 

И PhpStorm жалуется на строку self.givenAnswers[questionIndex] = ""; , в которой говорится, что мне нужно проверить, есть ли у объекта это свойство.
Полное сообщение:

Возможная итерация по неожиданным (пользовательским / унаследованным) элементам, возможно, отсутствует проверка hasOwnProperty.

Но givenAnswers переменная — это массив, а не объект, и я хочу добавить новый ключ и значения. Как мне удалить предупреждение или что-то не так с кодом?

Ответ №1:

Хотя вы могли бы добавить hasOwnProperty проверку, чтобы исправить предупреждение:

 for (const questionIndex in self.questions) {
    if (self.questions.hasOwnProperty(questionIndex)) {
        self.givenAnswers[questionIndex] = "";
    }
}
 

Если это массив, я думаю, что итерация от 0 до его длины будет менее подробной:

 for (let i = 0; i < self.questions.length; i  ) {
    self.givenAnswers[i] = "";
}
 

Комментарии:

1. Хорошо, первый вариант помог мне решить эту проблему. Это действительно кажется мне довольно глупым на стороне PhpStorm — что если я перебираю ключи объекта — у объекта должен быть ключ, и почему тогда он должен жаловаться. oO