Почему глубокие равные на двух массивах с глубоко равными элементами дают ложь?

Я должен массивы в JavaScript. Сравнение равенства элементов с === и == успешно. Но когда я делаю глубокие равные по массивам с chai, я продолжаю получать неудачу.

Что я делаю неправильно? Почему один массив показывает элемент в виде строки. Понятно, что на самом деле это не строка, верно? В противном случае оператор === потерпит неудачу.

Тип элементов в массивах - mongoose ObjectId.

Массивы:

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

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

Строка, которая терпит неудачу:

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

1 ответ

Это два равных массива, но разные объекты.

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

Используйте для сравнения ( отсюда)

isEqual = a.length == b.length && a.every(function(v,i) { return v === b[i]})
Другие вопросы по тегам