2013-01-17 20 views
1

是否有可能使用.indexOf函數與數組一起搜索?像這樣:如何使用數組的.indexOf JS函數?或另類?

var d = "Hello"; 
var s = new Array ("Heart", "David", "Foo", "Hello"); 
if(d.indexOf(s) != -1) { 
    alert("Found Hello"); 
} 

如果我使用上面的代碼,那麼它不會提醒任何事情。我查了控制檯,但是沒有錯誤

我在某處讀取.indexOf函數僅用於字符串,不適用於字符串數組。

在Javascript中是否有另一個indexOf.indexOf已經提供了我想要的?

Fiddle

+3

它是s.indexOf(d)' - 交換變量。 – Jon

+1

另請注意,如果您需要支持舊瀏覽器,則可能不支持'Array.prototype.indexOf'。有一個[MDN上的polyfill](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf)。 –

+0

謝謝@Jon! :D和JamesAllardice –

回答

3

你應該打電話給你希望在你希望你的情況來搜索,s.indexOf(d)項目沒有搜索對象的方法

1

有既爲stringsindexOf功能arrays。你將它應用到字符串上,並檢查數組的字符串是否包含在其中 - 你沒有錯誤,但不起作用。你必須圓做其他的方法來檢查字符串是否是數組的一個項目:

s.indexOf(d) != -1 
0

另一種方式來處理這個問題的方法是使用JavaScript對象的哈希映射屬性:

var d = "Hello"; 
var s = {"Heart": 1, "David": 1, "Foo": 1, "Hello": 1}; 
if (s[d]) { 
    alert("Found Hello"); 
} 
+0

答案中沒有一個數組。 (除非您將字符串視爲字符數組) – Cerbrus

+0

@Cerbrus可能與{}對象表示法不同,但JavaScript數組是字符串哈希映射:http://i.imgur.com/HZEqF.png – Overv

+0

因爲您返回true '聲明'arr'就像'arr = []',所以作爲數組。 'Array.isArray(s);'('s'from your answer)returns'false',雖然。因爲它是一個對象。 – Cerbrus