Atualmente estou usando o Angular 2.0. Eu tenho uma matriz da seguinte maneira:
var channelArray: Array<string> = ['one', 'two', 'three'];
Como posso verificar no TypeScript se o channelArray contém uma string 'três'?
Atualmente estou usando o Angular 2.0. Eu tenho uma matriz da seguinte maneira:
var channelArray: Array<string> = ['one', 'two', 'three'];
Como posso verificar no TypeScript se o channelArray contém uma string 'três'?
Respostas:
O mesmo que no JavaScript, usando Array.prototype.indexOf () :
console.log(channelArray.indexOf('three') > -1);
Ou usando o ECMAScript 2016 Array.prototype.includes () :
console.log(channelArray.includes('three'));
Observe que você também pode usar métodos como o mostrado por @Nitzan para encontrar uma string. No entanto, você normalmente não faria isso para uma matriz de strings, mas para uma matriz de objetos. Lá esses métodos foram mais sensatos. Por exemplo
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'}]
Referência
[ts] Property 'includes' does not exist on type 'string[]'
erro, preciso atualizar meu tsconfig para suportar esse recurso do ecma 6?
"lib": ["es7", "dom"]
Você pode usar o método some :
console.log(channelArray.some(x => x === "three")); // true
Você pode usar o método find :
console.log(channelArray.find(x => x === "three")); // three
Ou você pode usar o método indexOf :
console.log(channelArray.indexOf("three")); // 2
Se o seu código for baseado no ES7:
channelArray.includes('three'); //will return true or false
Caso contrário, por exemplo, você está usando o IE sem transpile babel:
channelArray.indexOf('three') !== -1; //will return true or false
o indexOf
método retornará a posição que o elemento tem na matriz, por isso usamos !==
diferente de -1 se a agulha for encontrada na primeira posição.
Observe também que a palavra-chave "in" não funciona em matrizes. Funciona apenas em objetos.
propName in myObject
O teste de inclusão da matriz é
myArray.includes('three');
Usar a matriz JavaScript includes () Método
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var n = fruits.includes("Mango");
Experimente você mesmo » link
Definição
O método includes () determina se uma matriz contém um elemento especificado.
Este método retorna true se a matriz contém o elemento e false se não.
O TS possui muitos métodos utilitários para matrizes disponíveis através do protótipo de matrizes. Existem vários que podem atingir esse objetivo, mas os dois mais convenientes para esse fim são:
Array.indexOf()
Aceita qualquer valor como argumento e, em seguida, retorna o primeiro índice no qual um determinado elemento pode ser encontrado na matriz ou -1 se não estiver presente.Array.includes()
Aceita qualquer valor como argumento e, em seguida, determina se uma matriz inclui esse valor. O método retornando true
se o valor for encontrado, caso contrário false
.Exemplo:
var channelArray: string[] = ['one', 'two', 'three'];
console.log(channelArray.indexOf('three')); // 2
console.log(channelArray.indexOf('three') > -1); // true
console.log(channelArray.indexOf('four') > -1); // false
console.log(channelArray.includes('three')); // ture
Você pode usar filter
também
this.products = array_products.filter((x) => x.Name.includes("ABC"))
faça assim:
departments: string[]=[];
if(this.departments.indexOf(this.departmentName.trim()) >-1 ){
return;
}
channelArray: string[]