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

  • My name is Festis and I'm free

    My name is F

    2 EKİM 2011
  • Shameless Maya

    Shameless Ma

    24 Mayıs 2012
  • thewinekone

    thewinekone

    17 Aralık 2005