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

  • brokenbellsVEVO

    brokenbellsV

    11 EYLÜL 2009
  • L- Crysis

    L- Crysis

    30 Aralık 2011
  • Study with Substance P

    Study with S

    31 Mayıs 2008