我有一个不可变列表,用于填充拖放列表功能(在映射列表项时,除了索引之外,列表项上没有 id)。
const list = Immutable.List([{"alias":"cat"},{"alias":"dog"},{"alias":"rat"}])
在拖结束时,该事件为我提供了列表新顺序的数组,但除了引用前一个顺序的索引之外,没有为我提供任何内容来真正识别列表项。
const newOrder = [{"order":1},{"order":0},{"order":2}]
我需要根据这些索引调度一个新的重新排序的不可变数据列表来更新我的商店,但尚未找到一种 Eloquent 且简洁的方法来执行此操作。我在想也许可以使用 sortBy 或者从第一个列表创建一个orderedMap并从newOrder数组引用它来创建orderedList?还没有找到任何看起来不错的解决方案。
需要派送:
const orderedList = Immutable.List([{"alias":"dog"},{"alias":"cat"},{"alias":"rat"}])
最好的方法是什么?
最佳答案
我认为你可以使用 map :
const newOrder = [{"order":1},{"order":0},{"order":2}];
const ordered =
Immutable.List([1,2,3])
.map(
(item,index,all)=>
all.get(newOrder[index].order)
);
console.log(
JSON.stringify(
ordered.toArray(),
undefined,
2
)
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.2/immutable.min.js"></script>
关于javascript - 从索引数组中重新排序 immutable.js 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48018898/