如何从无序的Immutable.List()中删除重复项?

Tho*_*enA 21 immutable.js

如何从无序的Immutable.List()中删除重复项?(不使用toJS()或toArray())

例如

Immutable.List.of("green", "blue","green","black", "blue")
Run Code Online (Sandbox Code Playgroud)

Var*_*ron 36

您可以将其转换为Set.集合是具有唯一值的列表.

Immutable.List.of("green", "blue","green","black", "blue").toSet()
Run Code Online (Sandbox Code Playgroud)

如果您再次需要它作为列表,只需将其转换回:

Immutable.List.of("green", "blue","green","black", "blue").toSet().toList()
Run Code Online (Sandbox Code Playgroud)

更新:

获得唯一值的可能性较小:

Immutable.List.of("green", "blue","green","black", "blue").distinct
Run Code Online (Sandbox Code Playgroud)

  • 使用Immutable 3.7.3,`.distinct`解决方案似乎不起作用(它是未定义的).`.toSet().toList()`完成工作! (6认同)
  • 同样适用于不可变3.8.2-`.distinct``返回```undefined``` (2认同)

小智 26

如果你有一个更复杂的类型,你也可以使用groupBy提供自己的选择器进行比较.以下内容将删除该属性上的重复项.name:

var distinctColors = duplicateColors.groupBy(x => x.name).map(x => x.first()).toList();
Run Code Online (Sandbox Code Playgroud)