javascript - 从索引数组中重新排序 immutable.js 列表

标签 javascript arrays immutable.js immutablelist

我有一个不可变列表,用于填充拖放列表功能(在映射列表项时,除了索引之外,列表项上没有 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/

相关文章:

c++ - 如何将一维数组与二维数组进行比较(C++)

javascript - Chai/Mocha 不可变测试始终失败

immutable.js - 使用 Immutable.js 在 OrderedMap 中添加一个项目

javascript - 显示/隐藏信息 jQuery

javascript - 在 Wordpress 解决方案中自定义 YouTube 缩略图并仍然计算观看次数?

javascript - 使用 IndexOf 分割数组不起作用

javascript - 对不可变的 JS Map 对象执行删除操作

javascript - 一棵 DOM 树中的多个 Knockout 模型绑定(bind)

javascript - 将不同的 Maven Web 项目合并到一个项目中

Java 错误 : New Generic TreeNode Array