我想在Map
内的不可变列表内交换项目,
例:
const Map = Immutable.fromJS({
name:'lolo',
ids:[3,4,5]
});
我正在尝试使用splice进行交换,也尝试使用
insert()
不可变方法。可以说我想从
[3, 4, 5]
交换到[3, 5, 4]
,我正在进行如下操作:list.set('ids', list.get('ids').splice(2, 0, list.get('ids').splice(1, 1)[0])
使用Immutable.js对不可变数据结构中的元素进行排序的最佳方法是什么?
最佳答案
您应该为此使用Map.update()
和List.withMutations()
:
map.update('ids', idsList => idsList.withMutations(function (idsList) {
let temp = idsList.get(2);
return idsList.set(2, idsList.get(1)).set(1, temp);
}));
请注意,我已将您的
list
重命名为map
-实际上是一个Map
。对于简单的分类,请
map.update('ids', idsList => idsList.sort(function (a, b) {
// magic
});