2016-11-09 109 views
-1

我有一種情況,我要獲得小數,並且需要根據結果存儲不同的對象,並且我想使用Switch/case語句來執行此操作,但是它不會如何操作我會期待的。Javascript Switch語句不能正常工作

下面是代碼......

var spread = high - low; 
var closeDiff = close - low; 
var answer = closeDiff/spread; 

switch(answer <= .3999) { 
    case (answer <= .3999): 
    singleEntry["percentClose"] = answer; 
    singleEntry["supportDay"] = false; 
    console.log("answer <= .39999"); 
    break; 
    case (answer > .95): 
    singleEntry["percentClose"] = answer; 
    singleEntry["supportDay"] = true; 
    singleEntry["peakClose"] = true; 
    console.log("answer > .95"); 
    break; 
    default: 
    singleEntry["percentClose"] = answer; 
    singleEntry["supportDay"] = true; 
    console.log("answer default"); 
} 

它總是默認爲第一種情況下,即使answer不大於.3999低。我有7500個計算要做,它總是控制下面的代碼。

console.log("answer <= .39999"); 

那麼最新的交易?

+3

您完全誤解了'switch'語句的工作原理。 – Pointy

回答

1

A switch不適合你在做什麼。

if (answer <= .3999) { 
    singleEntry["percentClose"] = answer; 
    singleEntry["supportDay"] = false; 
    console.log("answer <= .39999");  
} 
else if (answer > .95) { 
    singleEntry["percentClose"] = answer; 
    singleEntry["supportDay"] = true; 
    singleEntry["peakClose"] = true; 
    console.log("answer > .95");  
} 
else { 
    singleEntry["percentClose"] = answer; 
    singleEntry["supportDay"] = true; 
    console.log("answer default"); 
} 

switch語句是用於將表達的幾種可能的離散結果之一之間選擇是有用的。在你的情況下,你有一個變量可能在一個或另一個範圍內有一個值,所以這完全不一樣。

+0

謝謝你的簡單解釋,我想知道如果我錯誤地使用它。我只是使用了一個if/else。 – illcrx

1

您必須先了解switch語句。試圖研究這個 JavaScript Switch Statement

switch(expression) { 
case n: 
    code block 
    break; 
case n: 
    code block 
    break; 
default: 
    default code block 

}

-2

你誤會使用switch語句。它用於比較表達式的真實值與案例。但是,如果你想堅持這種格式,你可以做到這一點。

var spread = high - low; 
var closeDiff = close - low; 
var answer = closeDiff/spread; 

switch(true){ 
    case (answer <= .3999): 
     singleEntry["percentClose"] = answer; 
     singleEntry["supportDay"] = false; 
     console.log("answer <= .39999"); 
     break; 
    case (answer > .95): 
     singleEntry["percentClose"] = answer; 
     singleEntry["supportDay"] = true; 
     singleEntry["peakClose"] = true; 
     console.log("answer > .95"); 
     break; 
    default: 
     singleEntry["percentClose"] = answer; 
     singleEntry["supportDay"] = true; 
     console.log("answer default");           
    } 

這將匹配true條件計算結果爲true第一種情況下的表達。

+0

任何降價的理由? – jagzviruz