Как проверить, содержит ли массив строку в TypeScript?

В настоящее время я использую Angular 2.0. У меня есть массив следующего вида:

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

Как я могу проверить в TypeScript, содержит ли channelArray строку 'three'?

Комментарии к вопросу (2)
Решение

Так же, как и в 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 method:

console.log(channelArray.find(x => x === "three")); // three

Или вы можете использовать метод indexOf:

console.log(channelArray.indexOf("three")); // 2
Комментарии (0)

Если ваш код основан на ES7:

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

Если нет, например, вы используете IE без babel transpile:

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

метод indexOf вернет позицию, которую занимает элемент в массиве, поэтому мы используем !==, отличное от -1, если игла найдена на первой позиции.

Комментарии (0)

Также обратите внимание, что "и в" ключевое слово не работает с массивами. Он работает только с объектами.

propName in myObject

Тест на включение массив

myArray.includes('three');
Комментарии (1)

Использовать массив JavaScript включает() способ

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

Попробуйте сами » ссылке

Определение

В включает в себя() метод определяет, является ли массив содержит указанный элемент.

Этот метод возвращает true, если массив содержит элемент, и false, если нет.

Комментарии (0)

ТС имеет много вспомогательных методов для массивов, которые доступны через прототип массивов. Есть несколько, которые могут достичь этой цели, но два наиболее удобными для этой цели являются:

  1. `Массива.метод indexOf () принимает любое значение в качестве аргумента и возвращает первый индекс, при которой данный элемент может быть найден в массиве или -1, если его нет.
  2. Массива.включает в себя () принимает любое значение в качестве аргумента и затем определяет, является ли массив содержит это значение. В метод, который возвращаетtrue`, если значение не найдено, в противном случае "ложь".

Пример:

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)