我正在尝试检查数组中是否已存在元素。我知道至少有两种不同的方法:[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
。我错过了什么吗?
另外,哪一个更快?
答案 0 :(得分:8)
两者都做了几乎相同的事情:检查myArray
是否有一个名为"Banana"
的属性,它没有;它有0,1,2,
和3
个键,而myArray[0]
的值恰好是&#34; Banana&#34;。
如果要检查字符串是否在数组中,可以使用Array.prototype.indexOf:
if( myArray.indexOf("Banana") >= 0 ) {
console.log("yes")
} else {
console.log("no")
}
答案 1 :(得分:0)
在这两种情况下,您都在寻找数组的 bananath(+1)元素,这是不正确的。
无论哪种方式,都不应该使用第一个(即使它用于此目的)因为它不打算与数组一起使用,因为它将寻找属性。