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'?
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 que muestra @Nitzan para encontrar una cadena. Sin embargo, normalmente no haría eso para una matriz de cadenas, sino para una matriz de objetos. Allí esos métodos eran 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
Puedes usar algún método :
console.log(channelArray.some(x => x === "three")); // truePuedes usar el método de búsqueda :
console.log(channelArray.find(x => x === "three")); // threeO puede usar el método indexOf :
console.log(channelArray.indexOf("three")); // 2Si su código está basado en ES7 (o versiones superiores):
channelArray.includes('three'); //will return true or falseSi no, por ejemplo, está utilizando IE sin transpile de babel:
channelArray.indexOf('three') !== -1; //will return true or false el método indexOf devolverá la posición que tiene el elemento en la matriz, por eso usamos !== diferente de -1 si la aguja se encuentra en la primera posición.