Перебор массива объектов в js: пропустить, когда не определено

#javascript #arrays #iteration

#javascript #массивы #итерация

Вопрос:

Я хотел бы выполнить итерацию по массиву javascript (вложенные объекты: на основе коллекции Json) и собрать данные из его объектов. Но если данные объекта недоступны, пропустите его и перейдите к следующему объекту, соответственно. продолжить итерацию. В настоящее время эта ошибка появляется, если данные недоступны в соответствующем объекте: Uncaught TypeError: Cannot read property 'hk5' of undefined

Как я могу сначала проверить, доступны ли данные (далее hk5)?

Перебор всех «объектов данных»

 for (var i = 0; i < data.collection.items.length; i  ) {
    var data = data.collection.items[i].data[2].value.packet_data_field.application_data_params.hk5;
    console.log(belaMode);
}
  

Спасибо!

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

1. С помощью if инструкции . if инструкции позволяют выполнять код с условными условиями. Они выглядят как if (some condition) { /*do something if true */ } else { /* do something if false */}

Ответ №1:

 for (var i = 0; i < data.collection.items.length; i  ) {
    if(typeof(data.collection.items[i].data[2].value.packet_data_field.application_data_params) != 'undefined'){
    var data = data.collection.items[i].data[2].value.packet_data_field.application_data_params.hk5;
    }
    console.log(belaMode);
}
  

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

1. Вы зашли на одно свойство слишком далеко. Операционная система хочет проверить, не определено ли значение application_data_params .

Ответ №2:

 if(data.collection.items[i].data[2].value.packet_data_field.application_data_params!=undefined){}