¿Cómo verifico si una matriz contiene una cadena en TypeScript?

Respuestas:

523

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

Array.find ()

Array.some ()

Array.filter ()

baao
fuente
1
Recibo un [ts] Property 'includes' does not exist on type 'string[]'error, ¿necesito actualizar mi tsconfig para admitir esta función ecma 6?
S ..
3
Lo averigué. Necesitaba agregar "es7" en la matriz para la propiedad "lib" en mi archivo tsconfig.json, por ejemplo. "lib": ["es7", "dom"]
S ..
120

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
Nitzan Tomer
fuente
10

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 indexOfmé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.

alejoko
fuente
8

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');
David Dehghan
fuente
2
Es una trampa que vale la pena mencionar, especialmente si vienes de Python. Peor aún, de alguna manera también funciona en matrices, ya que también son objetos. Simplemente no funciona de la manera que probablemente pienses que debería: comprueba si hay algo en la matriz como índice.
Cito
5

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.

Basi
fuente
1

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:

  1. 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.
  2. Array.includes()Toma cualquier valor como argumento y luego determina si una matriz incluye este valor. El método devuelve truesi 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
Willem van der Veen
fuente
1

Se puede utilizar filtertambién

this.products = array_products.filter((x) => x.Name.includes("ABC"))
Arvind Chourasiya
fuente
0

hazlo así:

departments: string[]=[];
if(this.departments.indexOf(this.departmentName.trim()) >-1 ){
            return;
    }
Abdus Salam Azad
fuente