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

  • Chanre Joubert

    Chanre Joube

    27 Temmuz 2012
  • Dave Wallace

    Dave Wallace

    27 Kasım 2007
  • TeeMayneTV

    TeeMayneTV

    27 Kasım 2010