Kaip "TypeScript" kalba patikrinti, ar masyve yra eilutė?

Šiuo metu naudoju "Angular 2.0". Turiu tokį masyvą:

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

Kaip TypeScript kalba patikrinti, ar channelArray yra eilutė 'trys'?

Sprendimas

Tas pats, kaip ir "JavaScript", naudojant Array.prototype.indexOf():

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

Arba naudojant ECMAScript 2016 Array.prototype.includes():

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

Atkreipkite dėmesį, kad eilutei surasti taip pat galite naudoti tokius metodus, kokius parodė @Nitzan. Tačiau paprastai tai darytumėte ne eilutėms, o objektų masyvams. Ten šie metodai buvo prasmingesni. Pavyzdžiui

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

Nuoroda

Array.find()

Array.some()

Array.filter()

Komentarai (2)

Galite naudoti tam tikrą metodą:

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

Galite naudoti rasti metodą:

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

Arba galite naudoti indexOf metodą:

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

Jei jūsų kodas pagrįstas ES7:

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

Jei ne, pavyzdžiui, naudojate IE be babel transpile:

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

indexOf metodas grąžins elemento padėtį masyve, todėl mes naudojame !==, o ne -1, jei adata randama pirmoje padėtyje.

Komentarai (0)