2016-04-14 56 views
-2

我試圖檢查數組中是否已經存在元素。我知道至少有兩種不同的方式:[1][2]檢查數組中的元素

我測試了他們兩個,但在這兩種情況下得到no

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") 
} 

在這兩種情況下,我得到no。我錯過了什麼嗎?

另外,哪個更快?

Here is a fiddle

回答

7

這兩者都在做幾乎相同的事情:檢查myArray是否有一個名爲"Banana",它不;它有鍵0,1,2,3,而myArray[0]的值恰好是「香蕉」。

如果你想檢查一個字符串是否是一個數組,你可以使用Array.prototype.indexOf

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

爲什麼不把問題作爲重複來解決? –

+0

數組有元素。屬性是可能的,但「香蕉」沒有財產,只是一個元素。 –

+0

@ZachSaucier重複描述如何檢查,但不是爲什麼OPs方法不起作用。 – Paulpro

0

你,在這兩種情況下,尋找陣列的bananath(+1)元,這是不正確的。

無論採用哪種方式,都不應該使用第一個(即使它用於此目的),因爲它不打算與數組一起使用,因爲它會查找屬性。