不可变的js:如何比较具有相同内容和不同顺序的List?

时间:2019-05-29 03:35:46

标签: reactjs immutable.js

我正在尝试比较不可变js的不同顺序列表。 我以为“等于”是可行的,但只有在相同顺序时才是正确的。

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

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 个答案:

答案 0 :(得分:0)

有两个问题:

  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