Şu anda Angular 2.0 kullanıyorum. Aşağıdaki gibi bir dizi var:
var channelArray: Array<string> = ['one', 'two', 'three'];
TypeScript'te channelArray öğesinin 'üç' dizesi içerip içermediğini nasıl kontrol edebilirim?
Şu anda Angular 2.0 kullanıyorum. Aşağıdaki gibi bir dizi var:
var channelArray: Array<string> = ['one', 'two', 'three'];
TypeScript'te channelArray öğesinin 'üç' dizesi içerip içermediğini nasıl kontrol edebilirim?
Yanıtlar:
Array.prototype.indexOf () kullanarak JavaScript'teki ile aynı :
console.log(channelArray.indexOf('three') > -1);
Veya ECMAScript 2016 Array.prototype.includes () kullanarak :
console.log(channelArray.includes('three'));
Bir dizgi bulmak için @Nitzan tarafından gösterilen gibi yöntemleri de kullanabileceğinizi unutmayın. Ancak bunu genellikle bir dize dizisi için değil, bir dizi nesne için yaparsınız. Orada bu yöntemler daha mantıklıydı. Ö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
[ts] Property 'includes' does not exist on type 'string[]'
hata alıyorum, bu ecma 6 özelliğini desteklemek için tsconfig'mi güncellemem gerekiyor mu?
"lib": ["es7", "dom"]
Bazı yöntemi kullanabilirsiniz :
console.log(channelArray.some(x => x === "three")); // true
Bulma yöntemini kullanabilirsiniz :
console.log(channelArray.find(x => x === "three")); // three
Veya indexOf yöntemini kullanabilirsiniz :
console.log(channelArray.indexOf("three")); // 2
Kodunuz ES7 tabanlıysa:
channelArray.includes('three'); //will return true or false
Değilse, örneğin IE'yi babil aktarımı olmadan kullanıyorsunuz:
channelArray.indexOf('three') !== -1; //will return true or false
indexOf
Kullandığımız Bunun için yöntem olup, dizi halinde elemanı vardır konumu döndürür !==
-1 iğne birinci pozisyonda bulunursa, farklı olabilir.
Ayrıca "in" anahtar kelimesinin dizilerde çalışmadığını unutmayın . Yalnızca nesneler üzerinde çalışır.
propName in myObject
Dizi içerme testi:
myArray.includes('three');
JavaScript Dizisi Kullan () Yöntemini Kullan
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var n = fruits.includes("Mango");
Kendiniz Deneyin » link
Tanım
İçerir () yöntemi bir dizi, belirli bir öğe içeren olup olmadığını belirler.
Bu yöntem, dizi öğeyi içeriyorsa true değerini, değilse false değerini döndürür.
TS, Dizilerin prototipi ile kullanılabilen diziler için birçok faydalı yöntem içerir. Bu hedefe ulaşabilecek çoklu var ama bu amaç için en uygun ikisi:
Array.indexOf()
Bağımsız değişken olarak herhangi bir değeri alır ve ardından belirli bir öğenin dizide bulunabileceği ilk dizini veya yoksa -1 değerini döndürür.Array.includes()
Herhangi bir değeri bağımsız değişken olarak alır ve sonra bir dizinin bu değeri içerip içermediğini belirler. true
Aksi takdirde değer bulunursa dönen yöntem false
.Misal:
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
Sen kullanabilirsiniz filter
çok
this.products = array_products.filter((x) => x.Name.includes("ABC"))
bunu yap:
departments: string[]=[];
if(this.departments.indexOf(this.departmentName.trim()) >-1 ){
return;
}
channelArray: string[]