web-dev-qa-db-ja.com

TypeScriptで配列に文字列が含まれているかどうかを確認する方法

現在私はAngular 2.0を使用しています。次のような配列があります。

var channelArray: Array<string> = ['one', 'two', 'three'];

どうやってTypeScriptでchannelArrayに文字列 'three'が含まれているかどうかチェックできますか

153
code1

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()

320
bambam

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
93
Nitzan Tomer

コードがES7ベースの場合

channelArray.includes('three'); //will return true or false

そうでなければ、例えば、あなたはIEをバベルの変換なしで使っています:

channelArray.indexOf('three') !== -1; //will return true or false

indexOfメソッドは、要素が配列内にある位置を返します。これは、針が最初の位置に見つかった場合は-1とは異なる!==を使用するためです。

4
alejoko

JavaScriptの配列includes() を使用

var fruits = ["Banana", "Orange", "Apple", "Mango"];
var n = fruits.includes("Mango");

試してみてください» link

定義

includes() メソッドは、配列が指定された要素を含むかどうかを決定します。

このメソッドは、配列に要素が含まれている場合はtrueを返し、含まれていない場合はfalseを返します。

1
Basi

また、 "in"キーワード は配列では機能しません。それはオブジェクトに対してのみ機能します。

propName in myObject

配列包含テストは

myArray.includes('three');
0
David Dehghan

TSには、配列のプロトタイプを介して利用できる配列用のユーティリティメソッドが多数あります。この目標を達成できる方法は複数ありますが、この目的に最も便利なのは次の2つです。

  1. Array.indexOf()は、引数として任意の値を取り、指定された要素が配列内で見つかる最初のインデックスを返します。存在しない場合は-1を返します。
  2. 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
0

このようにする:

departments: string[]=[];
if(this.departments.indexOf(this.departmentName.trim()) >-1 ){
            return;
    }
0