获取具有特定值的数组元素的索引

时间:2015-12-16 20:45:45

标签: f#

考虑我有一系列选项,例如[|Some 1;Some0;None;None;Some0|] 并且我将获得具有None值的元素的索引,在这种情况下,正确的答案将是[|2;3|]

我目前的想法是将数组更改为列表,然后使用递归函数抛出它但在这种情况下我需要mutable value来计算索引,我不想使用mutable?

还有其他解决方案

1 个答案:

答案 0 :(得分:5)

这是另一个解决方案:

[|Some 1;Some 0;None;None;Some 0|]
    |> Array.indexed
    |> Array.filter (fun (i, x) -> x.IsNone)
    |> Array.map fst

这是使用序列表达式的另一种方式:

let x = [|Some 1;Some 0;None;None;Some 0|]
[|for i = 0 to x.Length-1 do
     if x.[i].IsNone then yield i|]