2009-07-01 3 views
0

nur versuchen, für die Gleichheit in diesem Stück Code zu testen, aber einen Fehler zu bekommen.Gleichheitsprüfung in Javascript

Ich dann Zugriff auf die Namen Werte von jedem dieser Eingänge und zuweisen Sie sie zu zwei Variablen, name1 und name2. Ich extrahiere dann den ersten Teil des Namens, abgegrenzt durch ein "_".

var oldName = name1.name.split('_',1);//dave 
var thisName= name2.name.split('_',1);//dave 
alert(oldName); 
alert(thisName); 
if(oldName !== thisName){//if "dave" is not equal to "dave" 
alert("name difference = "+ oldName + " " + thisName); 
} 

Noch, wenn Sie diesen Code ausführen, alarmiert die Nachricht unabhängig (ich habe versucht! = Auch). Im Prinzip sollte die Warnung nicht ausgeführt werden. Es ist ziemlich spät am Abend, also ist es wahrscheinlich offensichtlich, aber kann jemand diesen Noob in die richtige Richtung weisen? Wenn ich den Nicht-Operator aus der if-Anweisung entferne - funktioniert die Funktion wie gewünscht.

Antwort

4

thisName und oldName beide Arrays sind, tun Sie etwas wie folgt aus:

var oldName = name1.name.split('_',1)[0]; //dave 
var thisName= name2.name.split('_',1)[0]; //dave 

Und ich denke, es sollte funktionieren.

+0

Ja, String.prototype.split gibt ein Array zurück. – seanmonstar

+0

das hat auch funktioniert - leicht zu übersehen. Ich habe vergessen, dass es ein Array zurückgibt, nur weil ich nur einen einzigen Wert zurückgegeben habe, so dass es auf der Tatsache validierte, dass sie beide Arrays waren (weshalb Typumwandlung funktionierte). Das ist sauberer - Skript aktualisiert! Danke für Ihre Hilfe. – sunwukung

2

OK. Ich habe das Problem analysiert. Der Vergleich sah die Teilnehmer im Test als Objekte, im Gegensatz zum String-Wert des Inhalts. Also habe ich es gelöst, indem ich die Ergebnisse in eine Zeichenfolge umgewandelt habe.

Verwandte Themen