2012-04-04 46 views
2

我試圖用.indexOf找出如果數組包含字符串。有些東西正在造成錯誤,但我不知道是什麼。我敢肯定,這是一個真正簡單的事情,但我不知道的語言,因此看不到它。怎麼了?爲什麼我的indexOf語句創建一個錯誤

//this code creates an error in IE 
var myMines=new Array(); 
var newMine="22"; 
var myVar = myMines.indexOf(newMine); //when I comment out this line, the page does not generate an error 
+3

舊的IE版本不支持'indexOf'爲陣列。 – kirilloid 2012-04-04 17:45:14

+2

也,你得到什麼錯誤? – 2012-04-04 17:46:31

+0

適用於Chrome和Firefox。 – Tuan 2012-04-04 17:47:24

回答

1

所有你做的是創建一個數組,然後看是否在它存在的東西。

newMine很簡單,就是你正試圖尋找一個空數組內的值。嘗試首先填充數組。

+3

不應該只是返回-1? – 2012-04-04 17:46:52

+2

這不是錯誤。空數組上的'indexOf'將返回-1,而不是一個錯誤。 – 2012-04-04 17:47:28

3

在一些現代瀏覽器的indexOf是專門用於搜索另一個字符串的字符串,並返回起始索引的功能被添加之前。你正試圖在一個空數組上使用這個函數,並且我猜測在一個不支持數組的indexOf函數的瀏覽器中。

+1

'indexOf'是爲數組添加的。 https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf – 2012-04-04 17:47:55

+0

對空數組使用'indexOf'只會返回-1,而不是錯誤。 – 2012-04-04 17:53:40

1

你要做的主要是:

  • 創建陣列;
  • 創建一個變量;
  • 忘記將其添加到數組;
  • 要求一個項目的位置是NOU陣列中的陣列。
+2

這不會返回錯誤,它會返回-1。 – 2012-04-04 17:49:39

1

我剛剛貼出你的代碼到我的Firebug的控制檯(運行Firefox 11),它的工作。由於你的數組在這裏是「空的」,所以indexOf()只返回-1。也許你的腳本無法處理-1值。不過,我相信這個代碼應該可以在大多數瀏覽器中使用。誰知道,也許你剛剛發現鉻的JavaScript實現(^^)的錯誤。

+0

'indexOf'在IE <= 8的數組中不起作用。 – 2012-04-04 17:51:13

0

IndexOf返回字符串的當前索引/位置(0基),即

var myMines="Hello World"; 
var myVar = myMines.indexOf('W'); 
alert(myVar); // Will alert 6 because 'W' is at the 7th position (first index is 0) so index is 6 
+0

'indexOf'是爲數組添加的。 HTTPS://developer.mozilla。org/en/JavaScript/Reference/Global_Objects/Array/indexOf – 2012-04-04 17:51:38

+0

謝謝!正如我所知,當indexOf被調用並返回索引時,一個字符串在內部被轉換爲數組,如我所知,如果我錯了,請讓我清楚。 – 2012-04-04 17:55:33

+0

用於字符串和數組的'indexOf'與彼此無關。 – 2012-04-04 17:57:17