javascript - TypeScriptで配列が文字列を含んでいるかどうかを確認するにはどうすればよいですか?
現在、私は Angular 2.0 を使用しています。次のような配列があります:
var channelArray: Array<string> = ['one', 'two', 'three'];
TypeScriptでchannelArrayが文字列'three'を含んでいるかどうかをどうやって確認できますか?
回答 #1
JavaScriptと同じように、Array.prototype.indexOf() を使用する場合:
console.log(channelArray.indexOf('three') > -1);
または ECMAScript 2016 の Array.prototype.includes() を使用する場合:
console.log(channelArray.includes('three'));
また、文字列を見つけるために @Nitzan が示したような方法を使うこともできます。ただし、通常は文字列配列にはそれを使用せず、むしろオブジェクトの配列に対して使用します。その場合、その方法の方がより理にかなっています。例えば
const arr = [{foo: 'bar'}, {foo: 'bar'}, {foo: 'baz'}];
console.log(arr.find(e => e.foo === 'bar')); // {foo: 'bar'} (first match)
console.log(arr.some(e => e.foo === 'bar')); // true
console.log(arr.filter(e => e.foo === 'bar')); // [{foo: 'bar'}, {foo: 'bar'}]
参照
Array.find()
Array.some()
Array.filter()
回答 #2
いくつかの方法を使用できます:
console.log(channelArray.some(x => x === "three")); // true
find メソッドを使用できます:
console.log(channelArray.find(x => x === "three")); // three
あるいは、indexOf メソッドを使うこともできます:
console.log(channelArray.indexOf("three")); // 2
回答 #3
もしあなたのコードがES7ベース(またはそれ以上のバージョン)である場合:
channelArray.includes('three'); //will return true or false
もしそうでない場合、例えばバベルトランスパイルなしでIEを使用している場合:
channelArray.indexOf('three') !== -1; //will return true or false
indexOf メソッドは配列内の要素の位置を返します。そのため、最初の位置に要素が見つかった場合には、!== を -1 と異なるかどうかで使用します。
回答 #4
また、"in" キーワードは配列では動作しないことに注意してください。オブジェクトでのみ動作します。
propName in myObject
配列包含テストです
myArray.includes('three');
回答 #5
JavaScriptの配列 includes() メソッド を使用する
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var n = fruits.includes("Mango");
自分で試してみる » リンク
定義
includes() メソッドは、配列が指定された要素を含んでいるかどうかを判定します。
このメソッドは、配列がその要素を含む場合はtrueを返し、含まない場合はfalseを返します。
