2016-10-17 57 views
0

空白我寫一個函數:如何刪除返回值,如果變量是在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」是空白的,然後我需要如下,但是我的代碼被返送管線空間,如果「二」是空白:

Hi, 

Below is alert. 

Approval is done. 
Approval is done. 
Approval is done. 
+7

'[GG,HH,II,JJ] .filter(布爾)。加入( 「\ n」)' –

+2

可以請你修復該字符串文字? – Bergi

+0

只要不存在,就不要包含該部分。 – Carcigenicate

回答

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; 
} 

The ternary運營商(?:)格式爲condition ? if_true : if_false。你可以檢查字符串上的「falsy」值(null''都算作false),所以它只會輸出沒有錯誤的東西。

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"); 
} 
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) basicaly過濾空字符串,(因爲那些將返回false,這是一個boolean)。

.join("\n")您的陣列轉換爲string,但隨着使用\n而不是,

+0

我其實喜歡你的解決方案,比我自己的更好一點。 – samanime