如何找到数组值等于数字fsharp的所有索引?

f#

我试图找到一种方法来获取数组等于某个值的所有实例。我能够获得第一个和最后一个值,如下面的测试用例所示,但我也试图获得中间值。

let test = [|"1";"2";"4";"2";"6";"2";"9";"10"|]
test
|> Array.findIndex(fun x -> x = "2")

test
|> Array.findIndexBack(fun x -> x = "2")

如何获取所有索引的列表?

回答

这应该可以解决问题

let findAllIndexes predicate arr =
    Array.indexed arr
    |> Array.choose (fun (i, x) ->
        if predicate x then Some i else None)

像这样使用它

test |> findAllIndexes (fun x -> x = "2")

返回 [|1; 3; 5|]


以上是如何找到数组值等于数字fsharp的所有索引?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>