Şu anda Angular 2.0 kullanıyorum. Aşağıdaki gibi bir dizim var:
var channelArray: Array<string> = ['one', 'two', 'three'];
TypeScript'te channelArray'in 'three' dizesini içerip içermediğini nasıl kontrol edebilirim?
JavaScript'te olduğu gibi Array.prototype.indexOf() kullanılır:
console.log(channelArray.indexOf('three') > -1);
Veya ECMAScript 2016 Array.prototype.includes() kullanarak:
console.log(channelArray.includes('three'));
Bir dizeyi bulmak için @Nitzan'ın gösterdiği gibi yöntemleri de kullanabileceğinizi unutmayın. Ancak bunu genellikle bir string dizisi için değil, bir nesne dizisi için yaparsınız. Orada bu yöntemler daha mantıklıdır. Örneğin
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'}]
Referans
some yöntemini]1 kullanabilirsiniz:
console.log(channelArray.some(x => x === "three")); // true
Bulma yöntemini]2 kullanabilirsiniz:
console.log(channelArray.find(x => x === "three")); // three
Ya da indexOf yöntemini kullanabilirsiniz:
console.log(channelArray.indexOf("three")); // 2
Kodunuz ES7 tabanlı ise:
channelArray.includes('three'); //will return true or false
Eğer değilse, örneğin IE'yi babel transpile olmadan kullanıyorsunuzdur:
channelArray.indexOf('three') !== -1; //will return true or false
indeksOfmetodu, elemanın dizideki konumunu döndürecektir, bu nedenle iğne ilk konumda bulunursa -1'den farklı olarak
!==` kullanırız.