91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在JavaScript中優化邏輯判斷

發布時間:2021-06-08 17:44:25 來源:億速云 閱讀:214 作者:Leah 欄目:開發技術

如何在JavaScript中優化邏輯判斷?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

嵌套層級優化

function supply(fruit, quantity) {
    const redFruits = ['apple', 'strawberry', 'cherry', 'cranberries'];
    // 條件 1: 水果存在
    if (fruit) {
        // 條件 2: 屬于紅色水果
        if (redFruits.includes(fruit)) {
            console.log('紅色水果');
            // 條件 3: 水果數量大于 10 個
            if (quantity > 10) {
                console.log('數量大于 10 個');
            }
        }
    } else {
        throw new Error('沒有水果啦!');
    }
}

通過上面這個例子,我們可以看到:判斷流程中規中矩,符合現實世界的映射。但是,因代碼層層嵌套,導致閱讀和維護都存在困難。

如果傳入了 fruit 參數,則每次執行都至少需要經過兩步 if 判斷,在性能上也存在問題。

我們來對上面的代碼進行一下優化處理:

function supply(fruit, quantity) {
    const redFruits = ['apple', 'strawberry', 'cherry', 'cranberries'];
    if (!fruit) throw new Error('沒有水果啦');     // 條件 1: 當 fruit 無效時,提前處理錯誤
    if (!redFruits.includes(fruit)) return; // 條件 2: 當不是紅色水果時,提前 return

    console.log('紅色水果');

    // 條件 3: 水果數量大于 10 個
    if (quantity > 10) {
        console.log('數量大于 10 個');
    }
}

這里主要對嵌套層級做了優化,提前終止掉了不符合的條件,將三層嵌套減少到了一層,簡化了代碼結果結構,增強了可閱讀性。

多條件分支的優化

相信我們很多人對下面這種代碼不陌生吧?(想想剛開始寫代碼那會啊)

function pick(color) {
    // 根據顏色選擇水果
    if (color === 'red') {
        return ['apple', 'strawberry'];
    } else if (color === 'yellow') {
        return ['banana', 'pineapple'];
    } else if (color === 'purple') {
        return ['grape', 'plum'];
    } else {
        return [];
    }
}

我們需要知道一點原則:if else 更適合于條件區間判斷,而 switch case 更適合于具體枚舉值的分支判斷。

我們使用 switch...case...進行一下改寫:

function pick(color) {
    // 根據顏色選擇水果
    switch (color) {
        case 'red':
            return ['apple', 'strawberry'];
        case 'yellow':
            return ['banana', 'pineapple'];
        case 'purple':
            return ['grape', 'plum'];
        default:
            return [];
    }
}

switch...case... 優化之后的代碼看上去格式整齊,思路很清晰,但還是很冗長。繼續優化:

借助 Object 的 {key: value} 結構,我們可以在 Object 中枚舉所有的情況,然后將 key 作為索引,直接通過 Object.key 或者 Object[key] 來獲取內容:

const fruitColor = {
    red: ['apple', 'strawberry'],
    yellow: ['banana', 'pineapple'],
    purple: ['grape', 'plum'],
}
function pick(color) {
    return fruitColor[color] || [];
}

使用 Map 數據結構,真正的(key, value) 鍵值對結構:

const fruitColor = new Map()
    .set('red', ['apple', 'strawberry'])
    .set('yellow', ['banana', 'pineapple'])
    .set('purple', ['grape', 'plum']);

function pick(color) {
    return fruitColor.get(color) || [];
}

優化之后,代碼更簡潔、更容易擴展。

為了更好的可讀性,還可以通過更加語義化的方式定義對象,然后使用 Array.filter 達到同樣的效果:

const fruits = [
    {name: 'apple', color: 'red'},
    {name: 'strawberry', color: 'red'},
    {name: 'banana', color: 'yellow'},
    {name: 'pineapple', color: 'yellow'},
    {name: 'grape', color: 'purple'},
    {name: 'plum', color: 'purple'}
];

function pick(color) {
    return fruits.filter(f => f.color == color);
}

關于如何在JavaScript中優化邏輯判斷問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

全州县| 于田县| 雅江县| 宁河县| 台中县| 都江堰市| 长垣县| 崇文区| 景洪市| 乌拉特中旗| 安图县| 岗巴县| 张北县| 六安市| 枣阳市| 邵阳县| 建水县| 连平县| 得荣县| 双桥区| 望谟县| 田林县| 湖北省| 漳州市| 盘山县| 前郭尔| 海口市| 福建省| 乌拉特后旗| 贡嘎县| 新郑市| 广平县| 房山区| 宣威市| 浠水县| 宁化县| 雷波县| 博客| 濉溪县| 正蓝旗| 临武县|