2012-06-08 72 views
0

我的腦子一片空白,我不能想辦法解決......簡化如果..其他的JavaScript

我有以下代碼:

if (onlySelected === true) { 
    if (r.selected == true) { 
     result.push(pushValue); 
    } 
} 
else { 
    result.push(pushValue); 
} 

我怎麼能簡化該代碼到這樣的:

if (condition) { result.push(pushValue) } 

回答

8

試試這個:

if (!onlySelected || r.selected){ 
    result.push(pushValue); 
} 

或者這個,如果你確實需要的類型的平等,而不僅僅是感實性:

if (onlySelected !== true || r.selected){ 
    result.push(pushValue); 
} 
+0

謝謝!這工作良好,看起來更好。 –

0
if(onlySelected === false || r.selected == true) { 
    result.push(pushValue); 
} 
+1

!==真不等於===虛假 – Bergi

+0

@Bergi這使得完全沒有意義的我,所以你會介意解釋爲什麼呢? –

+0

例如'5!==真',但'5'不是'=== FALSE'。 – Bergi

0
(!onlySelected || r.selected) && result.push(pushValue); 
+0

使用'!onlySelected'將在必要時導致類型轉換。從他們使用'==='比較器的事實判斷,而不是簡單地'==',這似乎是不正確的。 –

+0

@AnthonyGrist這是真的,我是假設'onlySelected'意欲作爲一個布爾值。 'r.selected'也一樣。 – MaxArt

+0

onlySelected和r.selected確實都是布爾值。 –

0
if((onlySelected === true && r.selected === true) || 1) { 
    result.push(value) 
} 
+3

還是1?什麼是1? –

0

,我認爲這會工作:

if(!onlySelected || (onlySelected && r.selected)) 
    result.push(pushValue); 
+1

如果'!onlySelected'是假的,'onlySelected'是真實的,所以你可以消除的。 – pimvdb

0

嗯,這就是我做到了。

onlySelected === !0 ? r.selected == 1 && result.push(pushValue) : result.push(pushValue)