SORU
12 Mart 2010, Cuma


Eğer dize JavaScript listesinde olup olmadığını belirlemek

SQL eğer bir dize gibi: bir listede olup olmadığına bakabiliriz

Column IN ('a', 'b', 'c')

Javascript bunu yapmak için iyi bir yolu nedir? Çok aksak bunu yapmak için:

if (expression1 || expression2 || str === 'a' || str === 'b' || str === 'c') {
   // do something
}

Performansı ve bu netlik konusunda emin değilim:

if (expression1 || expression2 || {a:1, b:1, c:1}[str]) {
   // do something
}

Ya anahtarı işlevi kullanın:

var str = 'a',
   flag = false;

switch (str) {
   case 'a':
   case 'b':
   case 'c':
      flag = true;
   default:
}

if (expression1 || expression2 || flag) {
   // do something
}

Ama bu korkunç bir karmaşa. Herhangi bir fikir?

GÜNCELLEME

Bu durumda, kurumsal intranet sayfası için IE kullanmak zorunda olduğunu söylemeyi düşünmedim. ['a', 'b', 'c'].indexOf(str) !== -1 doğal olarak bazı sözdizimi şeker olmadan işe yaramaz.

indexOf burada desteklemeyen tarayıcılar için fully standards compliant version of the indexOf function. Ve burada benim sürüm (liste konumu hakkında bakım ya da tersten geçme umurumda değil, çünkü bu daha hızlı olmalıdır):

if (!Array.prototype.indexOf) {
   Array.prototype.indexOf = function(item) {
      var i = this.length;
      while (i--) {
         if (this[i] === item) return i;
      }
   }
   return -1;
}

CEVAP
12 Mart 2010, Cuma


indexOf arayın:

if (['a', 'b', 'c'].indexOf(str) >= 0) {
    //do something
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dogbert files

    Dogbert file

    12 Ocak 2012
  • Felice Musique

    Felice Musiq

    22 NİSAN 2014
  • GirlSanctuaryBlog

    GirlSanctuar

    28 Aralık 2011