Я уверен, что я как-то делаю это неправильно, но я пытаюсь использовать Immutable. js для функционального программирования, и у меня возникают проблемы при сравнении объектов по значению. В документации структура данных Set использует Immutable.is для тестирования на равенство и включение, а страница для Immutable.is сообщает
Value equality check with semantics similar to Object.is, but treats Immutable Collections as values, equal if the second Collection includes equivalent values
Однако, когда я тестирую это поведение на * Отладчик 1014 *, я получаю следующие результаты:
let x = {a:1}
let y = {a:1}
is(x,y) //False
is({a:1},{a:1}) //False
Set.of({a:1}).includes({a:1}) //False
Тогда я подумал, что, возможно, мне придется использовать карту Immutable вместо литералов объекта, но я все еще получаю следующее:
let x = Map({a:1})
let y = Set(Map({a:1}))
y.includes(x) //False
let x = []
x.push(Map({a:1}))
x.includes(Map({a:1})) //False
Я также получил аналогичные результаты, используя .include от Loda sh, поэтому я предполагаю, что есть нечто очевидное, чего я просто не вижу. Как сравнить элементы в списке по значениям?