2012-04-04 10 views
2

Ich versuche, IndexOf zu verwenden, um herauszufinden, ob ein Array eine Zeichenfolge enthält. Etwas verursacht einen Fehler, aber ich weiß nicht was. Ich bin sicher, das ist eine wirklich einfache Sache, aber ich kenne die Sprache nicht und so sehe ich es nicht. Was ist los mit dir?Warum erstellt meine indexOf-Anweisung einen Fehler

//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

ältere IE Versionen unterstützen nicht 'indexOf' für Arrays. – kirilloid

+2

auch, welchen Fehler bekommen Sie? –

+0

Funktioniert für mich in Chrome und Firefox. – Tuan

Antwort

1

Alles, was Sie tun, ist es ein Array zu erstellen und dann zu sehen, ob etwas darin existiert.

newMine ist einfach ein Wert, nach dem Sie in einem leeren Array suchen. Versuchen Sie zuerst, das Array zu füllen.

+3

sollte es nicht nur -1 zurückgeben? –

+2

Dies ist nicht der Fehler. 'indexOf' in einem leeren Array gibt -1 zurück, kein Fehler. –

3

Vor dem Hinzufügen in einigen modernen Browsern war indexOf ausschließlich eine Funktion, die zum Suchen einer Zeichenfolge nach einer anderen Zeichenfolge und zum Zurückgeben des Startindex verwendet wurde. Sie versuchen, diese Funktion für ein leeres Array zu verwenden, und ich vermute in einem Browser, der die indexOf-Funktion für Arrays nicht unterstützt.

+1

'indexOf' wurde für Arrays hinzugefügt. https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/indexOf –

+0

Die Verwendung von 'indexOf' auf einem leeren Array wird nur -1 zurückgeben, kein Fehler. –

1

Was Sie tun, ist im Grunde:

  • ein Array zu schaffen;
  • Erstellen einer Variablen;
  • vergessen, es zum Array hinzuzufügen;
  • fragt ein Array nach der Position eines Elements, das sich im Array befindet.
+2

Dies würde keinen Fehler zurückgeben, es würde -1 zurückgeben. –

1

Ich habe gerade gebucht Ihren Code in meiner Firebug-Konsole (Lauf Firefox 11) und es hat funktioniert. Da Ihr Array hier "leer" ist, gibt indexOf() nur -1 zurück. Vielleicht können Sie Skript nur nicht mit einem -1 Wert umgehen. Ich glaube jedoch, dass dieser Code in den meisten Browsern funktionieren sollte. Wer weiß, vielleicht haben Sie gerade einen Fehler in der JavaScript-Implementierung von Chrome gefunden (^^).

+0

'indexOf' funktionierte nicht für Arrays in IE <= 8. –

0

Die IndexOf gibt die aktuelle Index/Position (0 base) von einer Schnur, d.h.

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' wurde für Arrays hinzugefügt. https: //developer.mozilla.org/de/JavaScript/Reference/Global_Objects/Array/indexOf –

+0

Vielen Dank! Eine Zeichenfolge wird intern in ein Array konvertiert, wenn indexOf aufgerufen wird und gibt den Index zurück, wie ich weiß. Bitte machen Sie mir klar, wenn ich falsch liege. –

+0

'indexOf' für Strings und Arrays haben nichts miteinander zu tun. –

Verwandte Themen