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

  • calicoJake

    calicoJake

    29 EKİM 2007
  • GWTLecturer

    GWTLecturer

    18 EKİM 2012
  • Mark Brown

    Mark Brown

    9 HAZİRAN 2010