Obecnie używam Angular 2.0. Mam tablicę w następujący sposób:
var channelArray: Array<string> = ['one', 'two', 'three'];
Jak mogę sprawdzić w TypeScript, czy channelArray zawiera ciąg „trzy”?
Obecnie używam Angular 2.0. Mam tablicę w następujący sposób:
var channelArray: Array<string> = ['one', 'two', 'three'];
Jak mogę sprawdzić w TypeScript, czy channelArray zawiera ciąg „trzy”?
Odpowiedzi:
To samo co w JavaScript, używając Array.prototype.indexOf () :
console.log(channelArray.indexOf('three') > -1);
Lub przy użyciu ECMAScript 2016 Array.prototype.includes () :
console.log(channelArray.includes('three'));
Zauważ, że możesz również użyć metod takich jak pokazane przez @Nitzan, aby znaleźć ciąg znaków. Jednak zwykle nie zrobiłbyś tego dla tablicy ciągów, a raczej dla tablicy obiektów. Tam te metody były bardziej sensowne. Na przykład
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'}]
Odniesienie
[ts] Property 'includes' does not exist on type 'string[]'
Pojawia się błąd, czy muszę zaktualizować mój tsconfig, aby obsługiwał tę funkcję ecma 6?
"lib": ["es7", "dom"]
Możesz użyć metody :
console.log(channelArray.some(x => x === "three")); // true
Możesz użyć metody find :
console.log(channelArray.find(x => x === "three")); // three
Lub możesz użyć metody indexOf :
console.log(channelArray.indexOf("three")); // 2
Jeśli Twój kod jest oparty na ES7:
channelArray.includes('three'); //will return true or false
Jeśli nie, na przykład używasz IE bez transpozycji Babel:
channelArray.indexOf('three') !== -1; //will return true or false
indexOf
sposób powraca pozycji element ma w tablicy ze względu na to, że korzystać !==
różni się od -1 gdy igła znajduje się w pierwszej pozycji.
Zauważ też, że słowo kluczowe „in” nie działa na tablicach. Działa tylko na obiektach.
propName in myObject
Test włączenia tablicy jest
myArray.includes('three');
Użyj metody JavaScript Array zawiera ()
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var n = fruits.includes("Mango");
Wypróbuj sam » link
Definicja
Zawiera () określa, czy tablica zawiera określony element.
Ta metoda zwraca true, jeśli tablica zawiera element, i false, jeśli nie.
TS ma wiele metod użyteczności dla tablic, które są dostępne za pośrednictwem prototypu tablic. Istnieje wiele, które mogą osiągnąć ten cel, ale dwie najwygodniejsze do tego celu to:
Array.indexOf()
Bierze dowolną wartość jako argument, a następnie zwraca pierwszy indeks, pod którym dany element można znaleźć w tablicy, lub -1, jeśli nie jest obecny.Array.includes()
Bierze dowolną wartość jako argument, a następnie określa, czy tablica zawiera tę wartość. Metoda zwraca, true
jeśli wartość zostanie znaleziona, w przeciwnym razie false
.Przykład:
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
Można użyć filter
też
this.products = array_products.filter((x) => x.Name.includes("ABC"))
rób jak to:
departments: string[]=[];
if(this.departments.indexOf(this.departmentName.trim()) >-1 ){
return;
}
channelArray: string[]