我试图找到一种方法来获取数组等于某个值的所有实例。我能够获得第一个和最后一个值,如下面的测试用例所示,但我也试图获得中间值。
let test = [|"1";"2";"4";"2";"6";"2";"9";"10"|]
test
|> Array.findIndex(fun x -> x = "2")
test
|> Array.findIndexBack(fun x -> x = "2")
Run Code Online (Sandbox Code Playgroud)
如何获取所有索引的列表?
这应该可以解决问题
let findAllIndexes predicate arr =
Array.indexed arr
|> Array.choose (fun (i, x) ->
if predicate x then Some i else None)
Run Code Online (Sandbox Code Playgroud)
像这样使用它
test |> findAllIndexes (fun x -> x = "2")
Run Code Online (Sandbox Code Playgroud)
返回 [|1; 3; 5|]