Ich brauche eine Funktion:
%Vor% Wenn a und b identisch sind, wird true zurückgegeben.
Ich habe return a === b
ausprobiert, aber ich habe festgestellt, dass [] === []
den Wert false zurückgibt.
Einige Ergebnisse, die ich von dieser Funktion erwarte, können gegeben werden:
Es gibt einige Beispiele, die nach Schema auf Crockfords Website angepasst wurden. Genauer gesagt, check out:
%Vor%Es kann alles hier gefunden werden:
Hier ist ein Arbeitsbeispiel:
Habe gerade einige Testfälle auf Basis des OP geschrieben. Es stellte sich heraus, dass ich die Sub1-Funktion modifizieren musste, um & lt; = 0 not ==0 0 zu prüfen, ansonsten hat iseQual (3.14, 3.14) den Stack durchgebrannt. Außerdem funktioniert isEqual nicht für den Objektvergleich, Sie sind also alleine dort. Wenn Sie jedoch den Beispielen auf der Site von Crockford folgen, werden Sie sehen, wie einfach und unterhaltsam rekursive Methoden geschrieben werden können, um die Objektgleichheit zu überprüfen.
Sie können Underscore.js einbetten und _.isEqual(obj1, obj2)
.
Die Funktion arbeitet für beliebige Objekte und verwendet die effizienteste Möglichkeit, die gegebenen Objekte auf Gleichheit zu testen.
Wenn jemand, der diese Antwort liest, Angular.js verwendet, können Sie angular.equals(obj1,obj2);
Laut den Dokumenten :
Bestimmt, ob zwei Objekte oder zwei Werte äquivalent sind. Unterstützt den Wert Typen, reguläre Ausdrücke, Arrays und Objekte. Zwei Objekte oder Werte werden als gleichwertig betrachtet, wenn mindestens eines der Folgendes ist wahr:
- Beide Objekte oder Werte übergeben
===
comparison.- Beide Objekte oder Werte sind vom gleichen Typ und alle ihre Eigenschaften sind gleich, indem sie mit
angular.equals
verglichen werden.- Beide Werte sind
NaN
. (In JavaScript,NaN == NaN => false
. Aber wir betrachten zweiNaN
als gleich).- Beide Werte stellen den gleichen regulären Ausdruck dar (In JavaScript,
/abc/ == /abc/ => false
. Wir betrachten jedoch zwei reguläre Ausdrücke als gleich, wenn ihre Textdarstellung übereinstimmt.)- Bei einem Eigenschaftsvergleich werden Eigenschaften des Funktionstyps und Eigenschaften mit Namen, die mit
$
beginnen, ignoriert.Scope- und DOMWindow-Objekte werden nur anhand von
(===)
verglichen.
Tags und Links javascript