現在私はAngular 2.0を使用しています。次のような配列があります。
var channelArray: Array<string> = ['one', 'two', 'three'];
どうやってTypeScriptでchannelArrayに文字列 'three'が含まれているかどうかチェックできますか
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'}]
参照
console.log(channelArray.some(x => x === "three")); // true
console.log(channelArray.find(x => x === "three")); // three
または indexOfメソッド :を使用することもできます。
console.log(channelArray.indexOf("three")); // 2
コードがES7ベースの場合
channelArray.includes('three'); //will return true or false
そうでなければ、例えば、あなたはIEをバベルの変換なしで使っています:
channelArray.indexOf('three') !== -1; //will return true or false
indexOf
メソッドは、要素が配列内にある位置を返します。これは、針が最初の位置に見つかった場合は-1とは異なる!==
を使用するためです。
JavaScriptの配列includes() を使用
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var n = fruits.includes("Mango");
試してみてください» link
定義
includes() メソッドは、配列が指定された要素を含むかどうかを決定します。
このメソッドは、配列に要素が含まれている場合はtrueを返し、含まれていない場合はfalseを返します。
また、 "in"キーワード は配列では機能しません。それはオブジェクトに対してのみ機能します。
propName in myObject
配列包含テストは
myArray.includes('three');
TSには、配列のプロトタイプを介して利用できる配列用のユーティリティメソッドが多数あります。この目標を達成できる方法は複数ありますが、この目的に最も便利なのは次の2つです。
Array.indexOf()
は、引数として任意の値を取り、指定された要素が配列内で見つかる最初のインデックスを返します。存在しない場合は-1を返します。Array.includes()
任意の値を引数として受け取り、配列にこの値が含まれているかどうかを判断します。値が見つかった場合はtrue
を返し、それ以外の場合はfalse
を返すメソッド。例:
var channelArray: string[] = ['one', 'two', 'three'];
console.log(channelArray.indexOf('three')); // 2
console.log(channelArray.indexOf('three') > -1); // true
console.log(channelArray.indexOf('four') > -1); // false
console.log(channelArray.includes('three')); // ture
このようにする:
departments: string[]=[];
if(this.departments.indexOf(this.departmentName.trim()) >-1 ){
return;
}