В настоящее время я использую 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
Вы можете использовать метод find method:
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 без babel transpile:
channelArray.indexOf('three') !== -1; //will return true or false
метод indexOf
вернет позицию, которую занимает элемент в массиве, поэтому мы используем !==
, отличное от -1, если игла найдена на первой позиции.
Также обратите внимание, что "и в" ключевое слово не работает с массивами. Он работает только с объектами.
propName in myObject
Тест на включение массив
myArray.includes('three');
Использовать массив JavaScript включает() способ
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var n = fruits.includes("Mango");
Попробуйте сами » ссылке
Определение
В включает в себя() метод определяет, является ли массив содержит указанный элемент.
Этот метод возвращает true, если массив содержит элемент, и false, если нет.
ТС имеет много вспомогательных методов для массивов, которые доступны через прототип массивов. Есть несколько, которые могут достичь этой цели, но два наиболее удобными для этой цели являются:
Массива.включает в себя () принимает любое значение в качестве аргумента и затем определяет, является ли массив содержит это значение. В метод, который возвращает
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
делать такой:
departments: string[]=[];
if(this.departments.indexOf(this.departmentName.trim()) >-1 ){
return;
}