Javascript 使用Immutabel.js/functional js过滤一个列表中的元素和另一个列表中的元素

Javascript 使用Immutabel.js/functional js过滤一个列表中的元素和另一个列表中的元素,javascript,functional-programming,immutable.js,Javascript,Functional Programming,Immutable.js,我有一个包含所有项的数组,还有一个包含选定的项的数组。然后我想创建第三个可用的数组,该数组由除所选中包含的元素之外的所有组成 例如 如何筛选所有并选择以创建可用的?如果您已经在使用immutable.js,则您要查找的操作是Set类的方法 [在函数式编程中,术语“过滤器”通常意味着从源列表中与给定谓词匹配的元素返回新列表的操作]这应该有效 vararray1=[1,2,3]; var array2=[3]; var结果=[]; 对于(变量i=0;i

我有一个包含所有项的数组,还有一个包含选定的项的数组。然后我想创建第三个可用的数组,该数组由除所选中包含的元素之外的所有组成

例如


如何筛选所有并选择以创建可用的?

如果您已经在使用
immutable.js
,则您要查找的操作是
Set
类的方法

[在函数式编程中,术语“过滤器”通常意味着从源列表中与给定谓词匹配的元素返回新列表的操作]

这应该有效

vararray1=[1,2,3];
var array2=[3];
var结果=[];
对于(变量i=0;i控制台日志(结果).subtract()
?我不知道如何将数组转换为可以应用它的集合:-|我认为您可以使用
var s=newset(array)
-然后使用
toArray()
将结果重新转换为数组。无法测试它,因为出于某种原因,immutable不会加载到我的node.js环境中。谢谢!这是有效的:
a=[1,2,3];b=[3];sa=不可变。集合(a);sb=不可变集(b);sa.subtract(sb)Set{1,2}
我不太使用
Set
,这并不是说它错了。如果有人感兴趣,这里有一个使用
列表
和过滤器的示例。不是我的,但
O(n^2)
算法在匹配时未能提前终止可能是部分原因。另一种方法是不使用与OP相同的输入数据(字符串而不是数字),并使用
==
而不是
==
。根据OP的主题行,它也不是“功能性的”(也不使用immutable.js)。@Alnitak说得通,我对此一无所知。另外,我没有注意到
不可变的部分。
all = [1,2,3]
selected  = [3]
available =  [1,2]