Attualmente sto usando Angular 2.0. Ho un array come segue:
var channelArray: Array<string> = ['one', 'two', 'three'];
Come posso verificare in TypeScript se channelArray contiene una stringa "tre"?
Attualmente sto usando Angular 2.0. Ho un array come segue:
var channelArray: Array<string> = ['one', 'two', 'three'];
Come posso verificare in TypeScript se channelArray contiene una stringa "tre"?
Risposte:
Lo stesso di JavaScript, usando Array.prototype.indexOf () :
console.log(channelArray.indexOf('three') > -1);
O usando ECMAScript 2016 Array.prototype.includes () :
console.log(channelArray.includes('three'));
Nota che puoi anche usare metodi come mostrato da @Nitzan per trovare una stringa. Tuttavia di solito non lo faresti per un array di stringhe, ma piuttosto per un array di oggetti. Lì quei metodi erano più sensati. Per esempio
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'}]
Riferimento
[ts] Property 'includes' does not exist on type 'string[]'
Viene visualizzato un errore, devo aggiornare tsconfig per supportare questa funzione di ecma 6?
"lib": ["es7", "dom"]
Puoi usare un metodo :
console.log(channelArray.some(x => x === "three")); // true
Puoi usare il metodo find :
console.log(channelArray.find(x => x === "three")); // three
Oppure puoi usare il metodo indexOf :
console.log(channelArray.indexOf("three")); // 2
Se il tuo codice è basato su ES7:
channelArray.includes('three'); //will return true or false
In caso contrario, ad esempio stai usando IE senza transpile babel:
channelArray.indexOf('three') !== -1; //will return true or false
il indexOf
metodo restituirà la posizione dell'elemento nell'array, per questo usiamo !==
diverso da -1 se l'ago viene trovato nella prima posizione.
Si noti inoltre che la parola chiave "in" non funziona sugli array. Funziona solo su oggetti.
propName in myObject
Il test di inclusione dell'array è
myArray.includes('three');
Usa il metodo Array JavaScript include ()
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var n = fruits.includes("Mango");
Provalo tu stesso » link
Definizione
Il metodo Includes () determina se una matrice contiene un elemento specificato.
Questo metodo restituisce true se l'array contiene l'elemento e false in caso contrario.
TS ha molti metodi di utilità per gli array che sono disponibili tramite il prototipo degli array. Ci sono molti che possono raggiungere questo obiettivo, ma i due più convenienti per questo scopo sono:
Array.indexOf()
Prende qualsiasi valore come argomento e quindi restituisce il primo indice in cui è possibile trovare un determinato elemento nella matrice o -1 se non è presente.Array.includes()
Prende qualsiasi valore come argomento e quindi determina se un array include questo valore. Il metodo restituito true
se viene trovato il valore, altrimenti false
.Esempio:
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
Puoi filter
anche usare
this.products = array_products.filter((x) => x.Name.includes("ABC"))
fare così:
departments: string[]=[];
if(this.departments.indexOf(this.departmentName.trim()) >-1 ){
return;
}
channelArray: string[]