В даний час я використовую Angular 2.0. У мене є масив наступним чином:
var channelArray: Array<string> = ['one', 'two', 'three'];
Як я можу перевірити в TypeScript, чи не містить channelArray рядок "три"?
В даний час я використовую Angular 2.0. У мене є масив наступним чином:
var channelArray: Array<string> = ['one', 'two', 'three'];
Як я можу перевірити в TypeScript, чи не містить channelArray рядок "три"?
Відповіді:
Те саме, що у 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[]'
помилку, чи потрібно оновити свій tsconfig для підтримки цієї функції ecma 6?
"lib": ["es7", "dom"]
Можна скористатися деяким методом :
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 , якщо голка знаходиться в першому положенні.
Також зауважте, що ключове слово "in" не працює на масиви. Він працює лише на об'єктах.
propName in myObject
Тест включення масиву є
myArray.includes('three');
Використовувати масив JavaScript включає () метод
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var n = fruits.includes("Mango");
Спробуйте самі » посилання
Визначення
Метод include () визначає, чи містить масив вказаний елемент.
Цей метод повертає true, якщо масив містить елемент, а false якщо ні.
TS має багато корисних методів для масивів, які доступні через прототип масивів. Є декілька, які можуть досягти цієї мети, але два найбільш зручні для цієї мети:
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[]