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 une chaîne de caractères 'trois' ?
La même chose qu'en JavaScript, en utilisant [Array.prototype.indexOf()][1] :
console.log(channelArray.indexOf('three') > -1);
Ou en utilisant ECMAScript 2016 [Array.prototype.includes()][2] :
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 le feriez généralement pas 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()] [3]
[Array.some()][4]
[Array.filter()][5]
[1] : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf [2] : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes [3] : https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/find [4] : https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/some [5] : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
Vous pouvez utiliser la [certaine méthode][1] :
console.log(channelArray.some(x => x === "three")); // true
Vous pouvez utiliser la [méthode de recherche][2] :
console.log(channelArray.find(x => x === "three")); // three
Ou vous pouvez utiliser la [méthode indexOf][3] :
console.log(channelArray.indexOf("three")); // 2
[1] : https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/some [2] : https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/find [3] : https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf
Si votre code est basé sur ES7 :
channelArray.includes('three'); //will return true or false
Si non, par exemple vous utilisez IE sans babel transpile :
channelArray.indexOf('three') !== -1; //will return true or false
la méthode indexOf
retournera la position de l'élément dans le tableau, à cause de cela nous utilisons !==
différent de -1 si l'aiguille est trouvée à la première position.