SORU
25 Temmuz 2009, CUMARTESİ


Bir dizi değeri içerip içermediğini belirlemek

Eğer bir değeri bir dizi içinde olup olmadığını belirlemek gerekiyor.

Aşağıdaki fonksiyonu kullanıyorum:

Array.prototype.contains = function(obj) {
    var i = this.length;
    while (i--) {
        if (this[i] == obj) {
            return true;
        }
    }
    return false;
}

Yukarıdaki işlevi her zaman false değerini döndürür.

Dizi değerleri ve işlev çağrısı aşağıdaki gibi:

arrValues = ["Sam","Great", "Sample", "High"]
alert(arrValues.contains("Sam"));

CEVAP
25 Temmuz 2009, CUMARTESİ


arrValues.indexOf('Sam') > -1

8 ve altındaki IE Array.prototype.indexOf yöntem yoktur. YANİ kullanım: bu sürümler için

if(!Array.prototype.indexOf) {
    Array.prototype.indexOf = function(needle) {
        for(var i = 0; i < this.length; i  ) {
            if(this[i] === needle) {
                return i;
            }
        }
        return -1;
    };
}

Uzun zaman sonra Edit:En iyi JavaScript yama yerel ilkellerin prototype için değil. Daha iyi bir yol

var indexOf = function(needle) {
    if(typeof Array.prototype.indexOf === 'function') {
        indexOf = Array.prototype.indexOf;
    } else {
        indexOf = function(needle) {
            var i = -1, index = -1;

            for(i = 0; i < this.length; i  ) {
                if(this[i] === needle) {
                    index = i;
                    break;
                }
            }

            return index;
        };
    }

    return indexOf.call(this, needle);
};

Bu gibi kullanabilirsiniz:

var myArray = [0,1,2],
    needle = 1,
    index = indexOf.call(myArray, needle); // 1

İşlevi indexOf doğal bir yöntem varlığı, bir kez tespit, ya da yerel işlevi veya dolgu ile kendisi üzerine.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 10 Daughters, 2 Sons

    10 Daughters

    10 Mart 2009
  • LearnKey

    LearnKey

    19 AĞUSTOS 2008
  • The Warp Zone

    The Warp Zon

    24 AĞUSTOS 2007