如果我有数组A
,而我还有一个布尔阵列isChosen
与相同长度A
如何建立从一个新的数组A
,其中isChosen
是true
?类似的东西A.[isChosen]
?我不能Array.filter
直接使用,因为isChosen
不是A
元素的功能,没有Array.filteri
像Array.mapi
.
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)