arrays auf Gleichheit überprüfen
Paul
- javascript
0 misterunknown3 Micha0 Paul
Moin,
warum liefert der folgende Code immer false?
[code lang=javascript] var a = new Array('a','b');
var b = new Array('a','b');
if(a === b) alert('gleich');
else alert('nicht gleich');code]
Muss man also immer mit zwei ineinander liegenden Schleifen arbeiten?
Schönes WE,
Paul
Moin,
warum liefert der folgende Code immer false?
var a = new Array('a','b');
var b = new Array('a','b');
if(a === b) alert('gleich');
else alert('nicht gleich');
Das kann ich nicht mit Sicherheit sagen. Es könnte sein, dass du nur zwei Zeiger vergleichst, die auf die Arrays zeigen. Es könnte auch damit zusammenhängen, dass Arrays Objekte sind, und man diese nicht so miteinander vergleichen kann.
> Muss man also immer mit zwei ineinander liegenden Schleifen arbeiten?
[Grundsätzlich ja.](http://forum.de.selfhtml.org/archiv/2005/12/t119892/)
Grüße Marco
Hallo Paul,
warum liefert der folgende Code immer false?
Weil Du prüfst, ob es das selbe Objekt ist.
var a = new Array('a','b');
var b = a;
alert(a==b); // true;
Du möchtest aber auf Inhaltsgleichheit prüfen. Folglich musst Du auch den Inhalt bzw. die Elemente selbst checken.
Muss man also immer mit zwei ineinander liegenden Schleifen arbeiten?
Nein, nicht zwingend. Du könntest vorher beide Arrays sortieren und dann mit einer Schleife arbeiten. Abbrechen kannst Du, wenn Du den ersten unterschied gefunden hast:
for (var i=0; i<a.length; i++) {
if (a[i] != b[i]) {
alert("ungleich");
break;
}
}
Mit freundlichem Gruß
Micha
Weil Du prüfst, ob es das selbe Objekt ist...
Ah, leuchtet ein!
Mit dem Sortieren ist auch nett, danke.