不可变 js:如何比较内容相同但顺序不同的列表?

Immutable js : how to compare List with same contents and different ordered?

我正在尝试比较不可变 js 的不同有序列表。 我认为 "equals" 会起作用,但只有在相同顺序时才是正确的。

有什么方法可以比较是否包含相同的内容?

var list1 = Immutable.List.of({a:1},2,{b:3},4);
var list2 = Immutable.List.of(2,{a:1},4,{b:3});
console.log(list1.equals(list2)) //false

有两个问题:

  1. 根据定义,顺序对列表至关重要
  2. 两个普通的 Javascript 对象永远不会彼此相等,即使它们具有相同的内容。

但是,您可以这样做:

const set1 = Immutable.Set.of(Immutable.Map({a:1}),2,Immutable.Map({b:3}),4);
const set2 = Immutable.Set.of(2,Immutable.Map({a:1}),4,Immutable.Map({b:3}));
console.log(set1.equals(set2)) //true

注意:将 var 与不可变 一起使用会破坏整个目的! 。使用 const.