如何使用javascript检测值是否为空?

时间:2018-12-05 05:28:40

标签: javascript regex match

从API接收数据并使用match()寻找tecto,碰巧在某些情况下match()不正确,然后为null,我收到以下错误消息:

未捕获(承诺)TypeError:无法读取null的属性“ 1”

我尝试验证match()是否为null,表明数据为空字符串,但仍会返回相同的错误。

如何消除控制台中的错误?

我的代码:

            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 :(得分:2)

您的问题是,如果text字符串与正则表达式不匹配,则match函数将返回null,它不带有[1]。您必须将match结果存储在一个变量中,并在尝试获取[1]之前确定该结果是否为null。

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

如果匹配项找到了某些内容,则代码进入if内,并从中获取[1]。如果不是,则为null,并且不进入if和您的下一个if then检查,以查看resultProduct是否为null。

您需要同时进行产品匹配和型号匹配。

答案 1 :(得分:-1)

使用以下方法,您可以检查输入值是否为空字符串(“”),null,undefined,false以及数字0和NaN。

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

}