2016-04-14 4 views
-2

Bir dizide bir öğenin var olup olmadığını kontrol etmeye çalışıyorum. Bunu yapabilmek için en az 2 farklı yol biliyorum: [1] ve [2]. Dizide öğe için kontrol edin

Ben ikisini de denedik ancak her iki durumda da no olsun: Ben no olsun her iki durumda da

var myArray = ["Banana", "Orange", "Apple", "Mango"]; 

if ("Banana" in myArray) { 
    console.log("yes") 
} else { 
    console.log("no") // <-- 
} 

if (typeof myArray["Banana"] === 'undefined') { 
    console.log("no") // <-- 
} else { 
    console.log("yes") 
} 

. Bir şey mi eksik?

Ayrıca, hangisi daha hızlı?

Here is a fiddle.

cevap

7

Her ikisi de hemen hemen aynı şeyi yapıyor: myArray'un "Banana" adlı bir özelliğe sahip olup olmadığını kontrol etme; 0,1,2, ve 3 anahtarlarına sahiptir ve myArray[0]'daki değer "Banana" olur. Eğer kontrol etmek isterseniz bir dize Bir dizide ise

sen Array.prototype.indexOf kullanabilirsiniz:

if(myArray.indexOf("Banana") >= 0) { 
    console.log("yes") 
} else { 
    console.log("no") 
} 
+0

Sorunu neden kopya olarak kapatmıyorsunuz? –

+0

dizilerinde öğeler var. Özellikler mümkündür, ama '' banana '' hiçbir özellik, sadece bir elementtir. –

+0

@ZachSaucier Yinelenen, nasıl kontrol edileceğini açıklar, ancak OP'lerin yöntemleri neden çalışmadı. – Paulpro

0

Sen, her iki durumda da, dizinin bananath (1) eleman arıyoruz, bu doğru değil.

Her iki durumda da, ilk olarak kullanılmamalıdır (bu amaca hizmet etse bile) çünkü dizilerle kullanılmak üzere tasarlanmamıştır çünkü özellikleri arar.