2016-08-13 1 views
-1

Ich habe Arrays in Javascript. Gleichheitsvergleich für die Elemente mit beiden === und == ist erfolgreich. Aber wenn ich auf den Arrays mit Chai einen deep equals mache, bekomme ich immer Fehler.Warum ist tiefe Gleichheit auf zwei Arrays mit tief gleichen Elementen, die falsch ergeben?

Was mache ich falsch? Warum zeigt ein Array das Element als String an? Es ist eindeutig keine Schnur, oder? Andernfalls würde der Operator === fehlschlagen.

Der Typ der Elemente in den Arrays ist Mungo-ObjectId.

Die Arrays:

A: ["57af9c0623a2c3b106efa7a8"] 
B: [ 57af9c0623a2c3b106efa7a8 ] 

A[0] === B[0] // true 

Die Linie, die fehlschlägt:

expect(A).to.eql(B); 
+0

Überprüfen Sie die Anführungszeichen um 'B' zu vergleichen. – discipline

+0

@discipline Das ist in der Frage erwähnt! –

+3

'57af9c0623a2c3b106efa7a8' ohne Anführungszeichen sieht nicht wie eine Zeichenfolge oder eine Zahl aus. Es ist ein Syntaxfehler. Dies kann nicht sein, wie Ihr Array wirklich aussieht. –

Antwort

0

Dies ist gleich zwei Array aber verschiedene Objekte.

var a = ['57af']; 
var b = ['57af']; 
console.log(a[0] === b[0], a === b); 
--- 
true, false 

Use (von here)

isEqual = a.length == b.length && a.every(function(v,i) { return v === b[i]}) 
Verwandte Themen