2010-03-16 7 views
6
var fruits = [ 'apple', 'banana', 'orange' ]; 

"Muz" değerinin hangi indeksini nasıl bulabilirim? (ki, elbette, "1" dir).Dizideki bir öğenin dizinini nasıl alabilirim?

sayesinde

+0

Oops, "dizisindeki öğelerin sayısını nasıl" olarak yayın başlığı yanlış okumuş. İyi ki şimdi daha net yaptın. –

cevap

12

burada gösterildiği gibi: https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Objects/Array/IndexOf

if (!Array.prototype.indexOf) 
{ 
    Array.prototype.indexOf = function(elt /*, from*/) 
    { 
    var len = this.length >>> 0; 

    var from = Number(arguments[1]) || 0; 
    from = (from < 0) 
     ? Math.ceil(from) 
     : Math.floor(from); 
    if (from < 0) 
     from += len; 

    for (; from < len; from++) 
    { 
     if (from in this && 
      this[from] === elt) 
     return from; 
    } 
    return -1; 
    }; 
} 

Kullanımı:

var fruits = [ 'apple', 'banana', 'orange' ]; 
var index = fruits.indexOf('banana'); 

döndürür '1'

+0

>>> benim için yeni. Bu ne işe yarıyor? Google bunun için işe yaramıyor! – spender

+0

Bu, komut dosyalarınızın en üstünde yer almalı ve temel olarak JavaScript'i dahil ederek yöntemi dahil etmelidir. Cevabımı kullanımla güncelliyorum. –

+0

@spender, bu * imzasız sağ shift * bitly operatörü, bu bağlamda, sadece "length" değerinin 32 bit işaretsiz bir tamsayı olmasını sağlamak için kullanırlar (tüm bitsel operatörler dahili olarak 32 bit ints ile çalışır) ... – CMS

4

yoktur yerleşik bir indeks dönmek için mülk belirli bir öğenin Eğer bir işleve ihtiyacınız varsa, o zaman durilai tarafından tanımlanan prototip fonksiyonunu kullanabilirsiniz. Sadece dizini bulmalıyız Ama eğer değer döndürmek için bu basit kod bloğu kullanabilirsiniz:

for (var i=0; i<fruits.length; i++) 
{ 
    if (fruits[i] == "banana") 
    { 
    alert(i); 
    } 
}