f#array.filter基于bool数组

mat*_*ser 1 f#

如果我有数组A,而我还有一个布尔阵列isChosen与相同长度A如何建立从一个新的数组A,其中isChosentrue?类似的东西A.[isChosen]?我不能Array.filter直接使用,因为isChosen不是A元素的功能,没有Array.filteriArray.mapi.

des*_*sco 7

zip应该有帮助:

let l = [|1;2;3|]
let f = [|true; false; true|]

let r = [| for (v, f) in Seq.zip l f do if f then yield v|]
// or
let r = (l, f) ||> Seq.zip |> Seq.filter snd |> Seq.map fst |> Seq.toArray 
Run Code Online (Sandbox Code Playgroud)