2016-04-14 55 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)元,这是不正确的。

无论采用哪种方式,都不应该使用第一个(即使它用于此目的),因为它不打算与数组一起使用,因为它会查找属性。