JS 比對字串的幾個方法
在處理要允許的host時,用到了幾個方法做了筆記,以下也會提到一些要注意的地方。
直接用 ===
1 | let allowHost = 'google.com' |
windows.location.host要跟條件「絕對一致」的話,直接用===
來判斷吧;但是如果不是…那就繼續看下去吧。
是否含有某個字串 String.prototype.includes()
1 | let allowHost = 'google.com' |
可以把字串丟入includes()
進行處理,若windows.location.host裡面有包含跟條件一致的字串,會回傳ture
,但如果找不到就會回傳false
。
遺憾的是IE並不支援
includes()
所以我們必須繼續看下去。
找到字串所在的索引值 String.prototype.indexOf()
1 | let allowHost = 'google.com' |
把字串丟入indexOf()
進行處理,若windows.location.host裡面有包含跟條件一致的字串,會回傳第一個被找到的索引值
,但如果都找不到就會回傳-1
。
為了支援大部分的瀏覽器會使用indexOf()
來做比對,但如果要比對的host是個陣列的話,可以再搭配some()
來做處理。
要比對陣列裡的元素,搭配 Array.prototype.some()
1 | let allowHost = ['google.com','yahoo.com','github.com'] |
使用some()
可以尋訪陣列中的每個元素,需要給some()
一個callback來進行處理,只要有一個符合條件的callback就會回傳ture
,都沒有符合就回傳false
。
如此一來就可以判斷多個host。