2013-04-24 33 views
-2

我想寫一些驗證js,將選擇最具體的值(過濾器3中的值比過濾器2等更具體)JS if ... else和&&不匹配正在測試的變量的值

以下仍然返回「null」,我不知道爲什麼?

var filter1 = ["ELEC"]; 
var filter2 = new Array(); 
var filter3 = new Array(); 

function getParentCode(filter1, filter2, filter3) 
{ 
    if (filter1 === null && filter2 === null && filter3 === null) 
    { 
     return null; 
    } 
    else if (filter1 !== null && filter2 === null && filter3 === null) 
    { 
     return filter1; 
    } 
    else if (filter1 !== null && filter2 !== null && filter3 === null) 
    { 
     return filter2; 
    } 
    else if (filter1 !== null && filter2 !== null && filter3 !== null) 
    { 
     return filter3; 
    } 
    else 
    { 
     return "Error"; 
    } 
} 
+5

告訴我們你如何調用'getParentCode'。 – 2013-04-24 22:56:25

+0

retVal = getParentCode(filter1,filter2,filter3); – jwheaton 2013-04-24 23:25:58

回答

1

從我可以收集你發送的功能,正確的代碼,也許這樣的事情則params的:

function getParentCode(filter1, filter2, filter3){ 
    if(filter3.length>0) return filter3; 
    if(filter2.length>0) return filter2; 
    if(filter1.length>0) return filter1; 
    return null; 
} 

如果你確實表示無效,然後遵循Software Monkey的建議。

+0

乾杯,這工作很好。謝謝。 – jwheaton 2013-04-24 23:25:14

0

爲什麼不乾脆:

function getParentCode(filter1, filter2, filter3) { 
    if  (filter3!==null) { return filter3; } 
    else if (filter2!==null) { return filter2; } 
    else if (filter1!==null) { return filter1; } 
    else      { return null; } 
    } 
+0

您是否有意改變邏輯? – Sebas 2013-04-24 23:01:09

+2

我遵循他的陳述「過濾器3比過濾器2更具體」等。 – 2013-04-24 23:02:20

+0

在他的情況下,當你的所有3個變量不是'null'時,需要返回'filter3',並且即使'filter1'和'filter2'爲'null',其他回答也能正常工作。 – pilsetnieks 2013-04-24 23:10:04