我写了一个函数:
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.
答案 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");
}