2016-05-06 114 views
0

我剛剛發現了一個相當長的三元運算符語句,並且很難解開正在發生的事情,是否有工具或腳本能夠將其轉換爲正常的if/else-的if/else?將三元運算符語句轉換爲正常if/elseif/else語句

h1.textContent = (hours ? (hours > 9 ? hours : "0" + hours) : "00") + ":" + (minutes ? (minutes > 9 ? minutes : "0" + minutes) : "00") + ":" + (seconds > 9 ? seconds : "0" + seconds); 
+1

是的,鍵盤上的手指。即手動 – Tushar

+0

FWIW,他們可能已經打破了'x> 9? x:將「0」+ x'模式轉換爲函數並將其稱爲'sprintf_02d(x)'。 – Thilo

+0

所以我想答案是否定的,沒有這樣的工具或腳本 – Black

回答

3

如果需要,您可以使用函數並添加一個零。

function pad(n) { 
    if (n < 10) { 
     return '0' + n; 
    } 
    return n || '00'; 
} 

h1.textContent = pad(hours) + ":" + pad(minutes) + ":" + pad(seconds); 
1

這是擴張的結果:

h1.textContent = ""; 
if (hours){ 
    h1.textContent += (hours > 9 ? hours : "0" + hours); 
} else { 
    h1.textContent += "00"; 
} 
h1.textContent += ":"; 
if (minutes) { 
    h1.textContent += (minutes > 9 ? minutes : "0" + minutes); 
} else { 
    h1.textContent += "00"; 
} 
h1.textContent += ":"; 
if (seconds > 9){ 
    h1.textContent += seconds; 
} else { 
    h1.textContent += "0" + seconds; 
} 
1

使用Array.mapArray.join和 「現代」 ES6 箭頭函數表達式解決辦法:

var hours = 00, minutes = 35, seconds = 5, 
    time = [hours, minutes, seconds].map((v) => (v > 9? v : "0"+v) || "00").join(":"); 

h1.textContent = time; 
console.log(time); // "00:35:05" 
+0

哇,很好,謝謝你分享這個。 – Black