現在、Angular 2.0を使用しています。次のような配列があります。
var channelArray: Array<string> = ['one', 'two', 'three'];
TypeScriptで、channelArrayに文字列「3」が含まれているかどうかを確認するにはどうすればよいですか?
現在、Angular 2.0を使用しています。次のような配列があります。
var channelArray: Array<string> = ['one', 'two', 'three'];
TypeScriptで、channelArrayに文字列「3」が含まれているかどうかを確認するにはどうすればよいですか?
回答:
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'}]
参照
[ts] Property 'includes' does not exist on type 'string[]'
エラーが、私はこのECMA 6機能をサポートするために私のTSconfigを更新する必要がありますか?
"lib": ["es7", "dom"]
someメソッドを使用できます。
console.log(channelArray.some(x => x === "three")); // true
あなたはfindメソッドを使うことができます:
console.log(channelArray.find(x => x === "three")); // three
または、indexOfメソッドを使用できます。
console.log(channelArray.indexOf("three")); // 2
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
あなたも使えfilter
ます
this.products = array_products.filter((x) => x.Name.includes("ABC"))
このようにしてください:
departments: string[]=[];
if(this.departments.indexOf(this.departmentName.trim()) >-1 ){
return;
}
channelArray: string[]