簡體   English   中英

Javascript 大量條件

[英]Javascript Large amount of conditions

我正在做一個測驗,根據 3 個問題(油性、干性等)來確定您的皮膚類型

是為此編寫邏輯的最佳方法,如下所示,還是在性能方面有更有效的方法

if (q1 == 1 && q2 == 1 && q3 == 1){ skinType = "DRY" } else
if (q1 == 1 && q2 == 1 && q3 == 2){ skinType = "DRY" } else
if (q1 == 1 && q2 == 1 && q3 == 3){ skinType = "DRY" } else
if (q1 == 1 && q2 == 1 && q3 == 4){ skinType = "DRY" } else
if (q1 == 1 && q2 == 2 && q3 == 1){ skinType = "DRY" } else
if (q1 == 1 && q2 == 2 && q3 == 2){ skinType = "DRY" } else
if (q1 == 1 && q2 == 2 && q3 == 3){ skinType = "DRY" } else
if (q1 == 1 && q2 == 3 && q3 == 1){ skinType = "DRY" } else
if (q1 == 1 && q2 == 3 && q3 == 2){ skinType = "DRY" } else
if (q1 == 1 && q2 == 4 && q3 == 1){ skinType = "DRY" } else
if (q1 == 1 && q2 == 4 && q3 == 2){ skinType = "DRY" } else
if (q1 == 1 && q2 == 2 && q3 == 4){ skinType = "COMBO" } else
if (q1 == 1 && q2 == 3 && q3 == 3){ skinType = "COMBO" } else
    ....etc

在性能方面,沒有什么比簡單條件更快的了,但在可讀性和代碼維護方面則不然,這在編碼中也很重要。

這取決於您的數據。 嘗試找到准確確定目標類的模式或輸入組合(例如 q1 ==1 && q2 == 1 總是“DRY”)並消除冗余行。

由於您的許多輸入組合似乎產生相同的類,即 DRY、COMBO,您還可以嘗試構建類似於決策樹的嵌套條件。

if (q1 == 1) {
    if (q2 == 1) {
        skinType = "DRY";
    } else if (q2 == 2) {
        if (q3 == 4) {
            skinType = "COMBO";
        } else {
            skinType = "DRY";
        }
    }

    //...
}

構建良好決策樹的一種更復雜的選擇是ID3 算法

您可以使用 Switch case 語句以獲得更好的性能(“與 if-else 相比,switch 語句在大多數情況下更快”)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM