F#删除数组中的某个元素

时间:2013-10-28 06:57:03

标签: f#

我查看了F#数组模块,但似乎没有可以从数组中删除某个元素的函数。我只是想知道是否存在任何功能呢?

E.g。

remove 2 [| 0 ; 1 ; 2 ; 3 ; 4 |]
val it -> [| 0 ; 1 ; 3 ; 4 |]

更新

阵列过滤器是我正在寻找的。除此之外,我的情况稍微具体一点。

如果我拥有的数组不是普通类型数组,而是一个特定类引用的数组。假设我只想删除member.order = 2的元素,那么谓词将如何?

1 个答案:

答案 0 :(得分:10)

您可以使用F#Array模块函数Array.filter实现此目的,如下所示:

> [| 0 ; 1 ; 2 ; 3 ; 4 |] |> Array.filter ((<>)2);;
val it : int [] = [|0; 1; 3; 4|]

更新:要弄清楚应该是什么样的lambda并不难。为了减少它的沉闷,你可以用另一个函数Array.choose获得相同的结果:

Array.choose (fun x -> if x.order = 2 then None else Some(x))

另外,我要指出,这两个函数都解决了一个稍微不同的 dumb 问题:从满足条件的数组所有元素中删除。从字面上看,您的问题可能被理解为只删除元素的第一次。这样的阅读仍然让您有机会创意为您的作业做出贡献:)