Je suis sûr que je ne fais pas cela correctement, mais j'essaie d'utiliser Immutable.js pour la programmation fonctionnelle et j'ai du mal à comparer les objets par valeur. Dans la documentation, la structure de données Set utilise Immutable.is pour les tests d'égalité et d'inclusion, et la page pour les états 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

Cependant, lorsque je teste ce comportement sur le débogueur de Firefox, j'obtiens les résultats suivants:

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

Ensuite, j'ai pensé que je devrais peut-être utiliser la carte d'Immutable au lieu des littéraux d'objet, mais j'obtiens toujours ce qui suit:

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

J'ai également obtenu des résultats similaires en utilisant .includes de Lodash, donc je suppose qu'il y a quelque chose d'évident que je ne vois tout simplement pas. Comment comparer les éléments d'une liste par valeurs?

1
Tayler Cooper 14 janv. 2020 à 08:17