F# 数组元素的索引

3

你好。

如何在数组中找到元素的索引?文档中没有任何说明。我找到的唯一方法是:

let arr = [|1; 4; 5; 10|]
let elem = 5
let i = Array.findIndex (fun e -> e = elem) arr

看起来你已经回答了自己的问题 - 那么问题是什么? - Random Dev
我认为我的方法是一个丑陋的解决方案,而且还有更加优雅的方法。 - Feofilakt
4
你可以将 lambda 函数简化为 ((=) elem),也可以使用 Array.IndexOf 函数,但这只是个人口味的问题。 - Random Dev
1
还要考虑使用 tryFindIndex,对于那些你不确定元素是否在数组中的情况。 - Mark Seemann
当你说“kludge”时,是指“低效”还是指“丑陋的代码”?如果你指的是“低效”,那么考虑使用Map,将元素作为键,索引作为值,从而提供快速查找索引值[O(log N)]。 - James Hugard
在这种情况下,我所说的“丑陋代码”是指为了迭代数组而创建lambda,而不是使用标准方法。但是,根据评论来看,这是一种正常的做法。 - Feofilakt
1个回答

4
如果您经常使用某个功能,可以自己创建一个快捷函数:
let findIndex arr elem = arr |> Array.findIndex ((=) elem)
...
let i = findIndex arr elem

2
或者:让 findIndex arr elem = arr |> Array.findIndex ((=) elem) - Foole
@Foole的方法更加优雅。我会将其融入进来。 - Sedat Kapanoglu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接