JavaScript/jQuery'de bir dizinin belirli bir dizeyi içerip içermediğini nasıl bulabilirim?

Birisi bana bir dizide "specialword" olup olmadığını nasıl tespit edeceğimi söyleyebilir mi? Örnek olarak:

categories: [
    "specialword"
    "word1"
    "word2"
]

jQuery $.inArray sunar:

inArrayin bulunan elemanın indeksini döndürdüğüne dikkat edin, bu nedenle0elemanın dizideki ilk eleman olduğunu gösterir. 1 elemanın bulunamadığını gösterir.

var categoriesPresent = ['word', 'word', 'specialword', 'word'];
var categoriesNotPresent = ['word', 'word', 'word'];

var foundPresent = $.inArray('specialword', categoriesPresent) > -1;
var foundNotPresent = $.inArray('specialword', categoriesNotPresent) > -1;

console.log(foundPresent, foundNotPresent); // true false
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

3,5 yıl sonra düzenle

$.inArray, destekleyen tarayıcılarda (bugünlerde neredeyse hepsi)Array.prototype.indexOfiçin etkili bir sarmalayıcıdır, desteklemeyenlerde ise bir şim sağlar. EsasenArray.prototype` dosyasına bir shim eklemeye eşdeğerdir ve bu da işleri yapmanın daha deyimsel/JSish bir yoludur. MDN böyle bir kod sağlamaktadır. Bugünlerde jQuery sarmalayıcısını kullanmak yerine bu seçeneği tercih ederdim.

var categoriesPresent = ['word', 'word', 'specialword', 'word'];
var categoriesNotPresent = ['word', 'word', 'word'];

var foundPresent = categoriesPresent.indexOf('specialword') > -1;
var foundNotPresent = categoriesNotPresent.indexOf('specialword') > -1;

console.log(foundPresent, foundNotPresent); // true false

3 yıl sonra tekrar düzenle

Tanrım, 6,5 yıl mı?!

Modern Javascript'te bunun için en iyi seçenek Array.prototype.includesdır:

var found = categories.includes('specialword');

Karşılaştırma yok ve kafa karıştırıcı -1 sonuçları yok. İstediğimizi yapar: true veya false döndürür. Eski tarayıcılar için çoklu doldurulabilir MDN'deki kodu kullanarak.

var categoriesPresent = ['word', 'word', 'specialword', 'word'];
var categoriesNotPresent = ['word', 'word', 'word'];

var foundPresent = categoriesPresent.includes('specialword');
var foundNotPresent = categoriesNotPresent.includes('specialword');

console.log(foundPresent, foundNotPresent); // true false
Yorumlar (22)

Al bakalım:

$.inArray('specialword', arr)

Bu fonksiyon pozitif bir tamsayı (verilen değerin dizi indeksi) veya verilen değer dizide bulunamazsa -1 döndürür.

Canlı demo: http://jsfiddle.net/simevidas/5Gdfc/

Muhtemelen bunu şu şekilde kullanmak istersiniz:

if ( $.inArray('specialword', arr) > -1 ) {
    // the value is in the array
}
Yorumlar (0)

Bir for döngüsü kullanabilirsiniz:

var found = false;
for (var i = 0; i < categories.length && !found; i++) {
  if (categories[i] === "specialword") {
    found = true;
    break;
  }
}
Yorumlar (3)