goodwin74
@goodwin74

Ошибка «Cannot read property» при запросе двумерного массива?

Ниже код, есть массив settings - который может быть пустой или с данными. В начале скрипт проверяется наличие данных и если есть загружает их в options. И есть функция сохранения новых данных. Хотя и при загрузке есть условие для проверки существования settings[idf][objectKey] - все равно выдает ошибку Cannot read property. В чем проблема не могу понять.

var settings = [];
//Подгрузка настроек если они уже есть, через перебор Object.keys(optionsObj).map(function(objectKey, index)
var options = (settings[idf][objectKey]) ? (settings[idf][objectKey]) : (''); //Тут ошибка Cannot read property
//Сохранение настроек
function saveOpt(){//Тут всё в порядке всё работает
settings[idf] = [];
settings[idf][$(this).attr('id')] = $(this).val(); 
}
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
Когда вы пишите так
settings[idf][objectKey]
в случае, если в settings нет ключа idf, то это будет выглядеть вот так
undefined[objectKey]
что является ошибкой. Поэтому нужно написать вот так
var options = idf in settings && objectKey in settings[idf] ? settings[idf][objectKey] : '';

т.е. проверяем сначала существование settings[idf], потом уже settings[idf][objectKey];
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы