Почему глубокие равные на двух массивах с глубоко равными элементами дают ложь?
Я должен массивы в 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]})