不可变 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
有两个问题:
- 根据定义,顺序对列表至关重要
- 两个普通的 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
.
我正在尝试比较不可变 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
有两个问题:
- 根据定义,顺序对列表至关重要
- 两个普通的 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
.