Momenteel gebruik ik Angular 2.0. Ik heb een array als volgt:
var channelArray: Array<string> = ['one', 'two', 'three'];
Hoe kan ik in TypeScript controleren of de channelArray een string 'three' bevat?
Hetzelfde als in JavaScript, met Array.prototype.indexOf():
console.log(channelArray.indexOf('three') > -1);
Of met behulp van ECMAScript 2016 Array.prototype.includes():
console.log(channelArray.includes('three'));
Merk op dat je ook methodes zoals @Nitzan laat zien kunt gebruiken om een string te vinden. Maar dat zou je meestal niet doen voor een string array, maar eerder voor een array van objecten. Daar waren die methodes zinniger. Bijvoorbeeld
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'}]
Referentie
U kunt de enige methode gebruiken:
console.log(channelArray.some(x => x === "three")); // true
U kunt de vind methode gebruiken:
console.log(channelArray.find(x => x === "three")); // three
Of je kunt de indexOf methode gebruiken:
console.log(channelArray.indexOf("three")); // 2
Als je code gebaseerd is op ES7:
channelArray.includes('three'); //will return true or false
Zo niet, dan gebruik je bijvoorbeeld IE zonder babel transpile:
channelArray.indexOf('three') !== -1; //will return true or false
de indexOf
methode zal de positie teruggeven die het element in de array heeft, daarom gebruiken we !==
anders dan -1 als de naald op de eerste positie gevonden is.