Как определить, является ли значение пустым с помощью JavaScript? - PullRequest
0 голосов
/ 05 декабря 2018

При получении данных от API и поиске текто с помощью match () случается, что в некоторых случаях match () является неправильным, тогда оно нулевое, и я получаю следующую ошибку:

Uncaught(в обещании) TypeError: Невозможно прочитать свойство '1' с нулевым значением

Я пытаюсь проверить, является ли match () нулевым, что данные являются пустой строкой, но все равно возвращает ту же ошибку.

Как я могу устранить ошибку в консоли?

Мой код:

            let text = jsonDesc.plain_text;

            dataOfProduct.description.desc = text; 

            const product = 'Producto:';
            let resultProduct = text.match(new RegExp(product + '\\s(\\w+)', 'i'))[1];

            const model = 'Modelo:';
            let resultModel = text.match(new RegExp(model + '\\s(\\w+)', 'i'))[1];

            if( resultProduct !== null && resultProduct.length > 1){
                dataOfProduct.description.title = resultProduct;
            } else{
                dataOfProduct.description.title = ''
            }

            if( resultModel !== null && resultModel.length > 1 ){
                resultModel.description.model = resultModel;
            } else{
                resultModel.description.model = ''
            }    

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Используя следующий способ, вы можете проверить, являются ли входящее значение пустыми строками (""), нулем, неопределенным, ложным и числами 0 и NaN.

var val = jsonDesc.plain_text;
if(!val){

}
0 голосов
/ 05 декабря 2018

Ваша проблема в том, что если строка text не соответствует регулярному выражению, то функция сопоставления возвращает ноль, для которого нет [1].Вы должны сохранить результат совпадения в переменной и определить, является ли он нулевым или нет, прежде чем пытаться получить [1].

let resultProduct = text.match(new RegExp(product + '\\s(\\w+)', 'i'));
if (resultProduct != null) {
  resultProduct = resultProduct[1];
}

Если совпадение обнаружило что-то, то код идет внутри if изахватывает [1] из него.Если это не так, то он равен null и не входит в if и ваш следующий if, затем проверяет, имеет ли значение resultProduct значение null, что и есть.

Это необходимо сделать как для соответствия продукта, так и для модели.

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