Bir dizinin TypeScript'te dize içerip içermediğini nasıl kontrol ederim?


Yanıtlar:


523

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

) (Array.find

Array.some ()

Array.filter ()


1
Bir [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?
S. ..

3
Anladım. Örneğin, tsconfig.json dosyasında "lib" özelliği için diziye "es7" eklemek gerekiyordu, örneğin. "lib": ["es7", "dom"]
S. ..


10

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

indexOfKullandığı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.


8

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');

2
Bu, özellikle Python'dan geliyorsanız, bahsetmeye değer bir tuzak. Daha da kötüsü, nesneler olduğu için diziler üzerinde de bir şekilde çalışır. Ben sadece muhtemelen düşündüğün şekilde çalışmıyor - yerine bir şey dizinin dizin olarak var olup olmadığını kontrol eder.
Cito

5

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.


1

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:

  1. 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.
  2. 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. trueAksi 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

1

Sen kullanabilirsiniz filterçok

this.products = array_products.filter((x) => x.Name.includes("ABC"))

0

bunu yap:

departments: string[]=[];
if(this.departments.indexOf(this.departmentName.trim()) >-1 ){
            return;
    }
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.