601 votes

Comment vérifier si un tableau contient une chaîne de caractères en TypeScript ?

J'utilise actuellement Angular 2.0. J'ai un tableau comme suit :

var channelArray: Array<string> = ['one', 'two', 'three'];

Comment puis-je vérifier en TypeScript si le channelArray contient la chaîne 'three' ?

22 votes

Il devrait être channelArray: string[]

7 votes

1 votes

Ce n'est pas spécifique à Typescript

983voto

mmm Points 17173

De la même manière qu'en JavaScript, en utilisant Array.prototype.indexOf() :

console.log(channelArray.indexOf('three') > -1);

Ou en utilisant ECMAScript 2016 Array.prototype.includes() :

console.log(channelArray.includes('three'));

Notez que vous pouvez également utiliser des méthodes comme celles montrées par @Nitzan pour trouver une chaîne de caractères. Cependant, vous ne feriez généralement pas cela pour un tableau de chaînes de caractères, mais plutôt pour un tableau d'objets. Dans ce cas, ces méthodes sont plus judicieuses. Par exemple

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'}]

Référence

Array.find()

Array.some()

Array.filter()

2 votes

Je reçois un [ts] Property 'includes' does not exist on type 'string[]' erreur, dois-je mettre à jour mon tsconfig pour supporter cette fonctionnalité d'ecma 6 ?

5 votes

J'ai trouvé la solution. J'avais besoin d'ajouter "es7" dans le tableau de la propriété "lib" dans mon fichier tsconfig.json, par exemple. "lib": ["es7", "dom"]

168voto

Nitzan Tomer Points 11798

Vous pouvez utiliser le une méthode :

console.log(channelArray.some(x => x === "three")); // true

Vous pouvez utiliser le méthode de recherche :

console.log(channelArray.find(x => x === "three")); // three

Ou vous pouvez utiliser le méthode indexOf :

console.log(channelArray.indexOf("three")); // 2

73voto

alejoko Points 196

Si votre code est basé sur ES7 (ou les versions supérieures) :

channelArray.includes('three'); //will return true or false

Si ce n'est pas le cas, vous utilisez par exemple IE sans babel transpile :

channelArray.indexOf('three') !== -1; //will return true or false

le site indexOf retournera la position de l'élément dans le tableau, c'est pour cela que nous utilisons !== différent de -1 si l'aiguille est trouvée à la première position.

24voto

Basi Points 304

Utilisez JavaScript Array includes() Méthode

var fruits = ["Banana", "Orange", "Apple", "Mango"];
var n = fruits.includes("Mango");

Essayez vous-même " lien

Définition

El inclut() détermine si un tableau contient un élément spécifié.

Cette méthode renvoie vrai si le tableau contient l'élément, et faux sinon.

0voto

user2738695 Points 20

Faites comme ça :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X