参数为空时脚本始终返回true

时间:2018-07-12 10:15:00

标签: javascript

我已经使用请求参数值编写了JavaScript代码。

请求是:

{
    "mbox": "abc",
    "mboxTrace":true,
    "mboxParameters": {
        "env":"nonprod",
        "pnr":"",
        "ATR":"",
        "travelDate":"",
        "deptTime":"",
        "arrivalTime":"",
        "fltNo":"",
         "SSR":"",
         "ancPurchased":"",
         "userType":"",
         "geo":"",
         "OS":"",
         "deptCity":"",
         "arrivalCity":"",
         "elig":"",
         "AirportTimezone":""
    }
}

JavaScript代码为:

if (mbox.name == 'abc')
{
    var ancillaryPurchased= "false";
    var ancArray = mbox.param('ancPurchased').split(',');
    //var count = ancArray.length;

    if(ancArray.length >= 1)
    {
        ancillaryPurchased = "true";
    } 
    else
    {
        ancillaryPurchased= "false";
    }   
    return ancillaryPurchased;
}

即使参数ancPurchased为空,此代码也返回true。

3 个答案:

答案 0 :(得分:1)

一个空字符串将被拆分成一个包含一个空字符串的数组。

var ancPurchased = '';
var ancArray = ancPurchased.split(',');
ancArray.length
>>> 1

您需要特殊说明:

var ancPurchased = '';
var ancArray = (ancPurchased ? ancPurchased.split(',') : []);
ancArray.length
>>> 0

答案 1 :(得分:0)

对空字符串执行分割将返回一个包含一个元素的数组。 因此每次都返回true。

答案 2 :(得分:0)

这是因为当您在此处分割空字符串时,它将返回一个元素的数组,即一个空字符串:

[""]

其长度等于1。

示例:

var str = "";

var len = str.split(",").length;

console.log(len);

您可以将代码修改为:

var ancArray = mbox.param('ancPurchased').trim() !=="" ?mbox.param('ancPurchased').split(',') : [];