開發中我們經常需要將一個String和多個String值進行比較。直覺反應是使用||符號連接多個===完成,例如:
if (string === 'banana' || string === 'pineapple') {
fruitColor = 'yellow';
}
這樣能夠非常能夠好的完成需求,但總覺得有點笨,並且對擴展不友好,當我們的水果種類變多時:
if (string === 'banana' || string === 'pineapple' || string === 'mongo' || string === 'lemon') {
fruitColor = 'yellow';
}
上面的程式碼看起來就不那麼好看了,讓我們看看有什麼其他方式能夠處理這種需求。
Switch
程式碼如下:
程式碼如下:
程式碼如下:
碼如下: string) {
fruitColor = 'yellow';
}
}
}
這看起來不錯,但是總是要多打些字,對於不喜歡多打字的人來說不是個好方法。
Array
程式碼如下:
> ['banana', 'pineapple', 'mongo', 'lemon'].indexOf(string) >= 0) {
fruitColor = 'yellow';
}
這下好多了,但還有個問題,IE9以下的IE瀏覽器並不支援indexOf方法,如果你要在IEjQuery
jQuery提供了一個inArray方法
複製程式碼
複製程式碼
複製程式碼
if ($.inArray(['banana', 'pineapple', 'mongo', 'lemon'], string) >= 0) {
fruitColor = 'yellow';
}
複製程式碼
複製程式碼複製程式碼複製程式碼複製碼🎜> 程式碼如下: if (_.contains(['banana', 'pineapple', 'mongo', 'lemon'], string)) { fruitColor = 'yellow' ; } 正規表示式 當然,我們還有終極武器-正規表示式 複製程式碼 程式碼如下: if (/^(banana|pineapple|mongo|lemon)$/.test(string)) { fruitColor = 'yellow'; }