檢查 TypeScript 陣列中是否存在字串
Shuvayan Ghosh Dastidar
2023年1月30日
-
使用
includes()
方法檢查 TypeScript 陣列中是否存在字串 -
使用
indexOf()
方法檢查 TypeScript 陣列中是否存在字串 -
使用
find()
方法檢查 TypeScript 陣列中是否存在字串 -
使用
some()
方法檢查 TypeScript 陣列中是否存在字串
本文將演示如何使用陣列原型中存在的各種內建函式來搜尋陣列中的字串。
使用 includes()
方法檢查 TypeScript 陣列中是否存在字串
includes()
方法確定目標元素是否存在於陣列中。它接收目標元素並返回一個布林值來表示陣列中的值。
在檢查相等時,該演算法認為所有零值都相等,而不管符號如何。 (-0、+0 都被認為等於 0),但 false
不等於 0。它使用 sameValueZero
演算法來搜尋陣列中是否存在元素。
以下程式碼段顯示瞭如何使用 includes()
方法。
var fruitsArray : string[] = ['apple', 'orange', 'lichi', 'banana'];
if(fruitsArray.includes('orange')){
console.log('orange is present in array');
}
輸出:
"orange is present in array"
includes()
方法區分大小寫,因此我們在傳遞值進行搜尋時應該小心。另一個引數確定從陣列中的哪個索引開始搜尋。
下面的程式碼段演示了這一點。
var fruitsArray : string[] = ['apple', 'orange', 'lichi', 'banana'];
if(!fruitsArray.includes('orange', 2)){
console.log('orange is not present in array after index = 2');
}
輸出:
"orange is not present in the array after index = 2"
使用 indexOf()
方法檢查 TypeScript 陣列中是否存在字串
indexOf()
方法的行為類似於 includes()
方法。它們的區別在於搜尋演算法,它通過嚴格相等運算子或 ===
檢查相等性。
以下程式碼段顯示瞭如何查詢陣列中某個元素的所有匹配項。
var fruitsArray : string[] = ['apple', 'orange', 'lichi', 'orange', 'banana'];
var targetFruit : string = 'orange';
var foundIndices : number[] = [];
let idx : number = fruitsArray.indexOf(targetFruit);
while(idx !== -1){
foundIndices.push(idx);
idx = fruitsArray.indexOf(targetFruit, idx + 1);
}
console.log(foundIndices);
輸出:
[1, 3]
indexOf()
和 includes()
方法都是相似的。但是,在 indexOf()
的情況下檢查 NaN
的存在失敗,而 includes()
成功確定它的存在。
另一個區別是這兩種方法的返回型別,分別是元素第一次出現的索引和布林值。
參考下面的程式碼。
var numbers : number[] = [ 1, 2, NaN, 3];
console.log(numbers.includes(NaN));
console.log(numbers.indexOf(NaN));
輸出:
true
-1
使用 find()
方法檢查 TypeScript 陣列中是否存在字串
如果成功執行,find()
方法返回目標元素的第一次出現,否則返回 undefined
。
var fruitsArray : string[] = ['apple', 'orange', 'lichi', 'banana'];
if(fruitsArray.find(e => e === 'orange')){
console.log('orange is present in array');
}
輸出:
"orange is present in array"
使用 some()
方法檢查 TypeScript 陣列中是否存在字串
some()
方法檢查陣列中是否至少有一個元素通過了傳遞給它的謂詞函式。以下程式碼段演示了它如何在陣列中搜尋字串。
var fruitsArray : string[] = ['apple', 'orange', 'lichi', 'banana'];
const search = (targetElement : string) => (arrElement : string) => arrElement === targetElement;
console.log(fruitsArray.some(search('orange')));
console.log(fruitsArray.some(search('grapes')));
輸出:
true
false