如果javascript中的变量为空,如何删除返回值

时间:2016-10-17 16:20:24

标签: javascript

我写了一个函数:

function abcd(gg,hh,ii,jj){
return "Hi,\n\nBelow is alert."\n\n"+gg+"\n"+hh+"\n"+ii+"\n"+jj+";
}

其中4个变量gg,hh,ii,jj已全局写入并动态调用。在哪里' gg'包含'批准已完成',' hh'包含'批准已完成',' ii'包含'批准已完成',' jj'正在进行批准'我担心的是有时我对gg,hh,ii或jj有价值而且有时没有,如果我有上面提到的所有变量的值,我会得到如下输出函数代码:

Hi,

Below is alert.

Approval is done.
Approval is done.
Approval is done.
Approval is done.

所以如果' ii'是空白然后我需要如下,但我的代码是返回行空间,如果' ii'是空白的:

Hi,

Below is alert.

Approval is done.
Approval is done.
Approval is done.

3 个答案:

答案 0 :(得分:2)

可能最干净的,你如何拥有它,会是这样的:

function abcd(gg,hh,ii,jj){
    return "Hi,\n\nBelow is alert.\n\n" 
        + (gg ? gg + "\n" : '')
        + (hh ? hh + "\n" : '')
        + (ii ? ii + "\n" : '')
        + jj;
}

三元运算符(?:)的格式为condition ? if_true : if_false。您可以检查字符串上的“虚假”值(null''都计为false),因此如果它不是假的,它只会输出内容。

答案 1 :(得分:2)

如果ii是空字符串,这里有一个快速解决方法:

function abcd(gg,hh,ii,jj){
return "Hi,\n\nBelow is alert.\n\n" + [gg,hh,ii,jj].filter(Boolean).join("\n");
}

.filter(Boolean)基本上过滤空字符串,(因为这些字符串会返回false,这是boolean)。

.join("\n")将您的数组转换为string,但使用\n而不是,

答案 2 :(得分:1)

您可以使用Array.filter过滤掉空白的,然后加入它们:

function getNonBlanks(array) {
    return array.filter(function (i) {
        // we only want items with a length
        return i.length > 0;
    });
}

function abcd(gg,hh,ii,jj){
    return "Hi,\n\nBelow is alert.\n\n" + getNonBlanks([gg,hh,ii,jj]).join("\n");
}