Actualmente estoy usando Angular 2.0. Tengo una matriz de la siguiente manera:
var channelArray: Array<string> = ['one', 'two', 'three'];
¿Cómo puedo verificar en TypeScript si channelArray contiene una cadena 'tres'?
Actualmente estoy usando Angular 2.0. Tengo una matriz de la siguiente manera:
var channelArray: Array<string> = ['one', 'two', 'three'];
¿Cómo puedo verificar en TypeScript si channelArray contiene una cadena 'tres'?
Respuestas:
Lo mismo que en JavaScript, usando Array.prototype.indexOf () :
console.log(channelArray.indexOf('three') > -1);
O usando ECMAScript 2016 Array.prototype.includes () :
console.log(channelArray.includes('three'));
Tenga en cuenta que también puede usar métodos como los mostrados por @Nitzan para encontrar una cadena. Sin embargo, normalmente no lo haría para una matriz de cadenas, sino para una matriz de objetos. Allí esos métodos fueron más sensatos. Por ejemplo
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'}]
Referencia
[ts] Property 'includes' does not exist on type 'string[]'
error, ¿necesito actualizar mi tsconfig para admitir esta función ecma 6?
"lib": ["es7", "dom"]
Puedes usar algún método :
console.log(channelArray.some(x => x === "three")); // true
Puedes usar el método find :
console.log(channelArray.find(x => x === "three")); // three
O puede usar el método indexOf :
console.log(channelArray.indexOf("three")); // 2
Si su código está basado en ES7:
channelArray.includes('three'); //will return true or false
Si no es así, por ejemplo, está utilizando IE sin transpilar babel:
channelArray.indexOf('three') !== -1; //will return true or false
el indexOf
método devolverá la posición que el elemento tiene en la matriz, por eso usamos !==
diferente de -1 si la aguja se encuentra en la primera posición.
También tenga en cuenta que la palabra clave "in" no funciona en matrices. Funciona solo en objetos.
propName in myObject
La prueba de inclusión de matriz es
myArray.includes('three');
Usar el método de matriz de JavaScript incluye ()
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var n = fruits.includes("Mango");
Pruébelo usted mismo » enlace
Definición
El método incluye () determina si una matriz contiene un elemento especificado.
Este método devuelve verdadero si la matriz contiene el elemento y falso si no.
TS tiene muchos métodos de utilidad para matrices que están disponibles a través del prototipo de matrices. Hay varios que pueden lograr este objetivo, pero los dos más convenientes para este propósito son:
Array.indexOf()
Toma cualquier valor como argumento y luego devuelve el primer índice en el que se puede encontrar un elemento dado en la matriz, o -1 si no está presente.Array.includes()
Toma cualquier valor como argumento y luego determina si una matriz incluye este valor. El método devuelve true
si se encuentra el valor, de lo contrario false
.Ejemplo:
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
Se puede utilizar filter
también
this.products = array_products.filter((x) => x.Name.includes("ABC"))
hazlo así:
departments: string[]=[];
if(this.departments.indexOf(this.departmentName.trim()) >-1 ){
return;
}
channelArray: string[]