在Javascript中,可以使用indexOf来获取数组中给定元素的第一个实例.
榆树最好的办法是什么?
array = Array.fromList ["Stack","Overflow","is","","awesome"]
element = ""
indexOf element array =
-- should return 3
Run Code Online (Sandbox Code Playgroud)
如果我们有一个列表而不是一个数组怎么办?
只是为了好玩,这里是List的手动滚动版本:
helper : List a -> a -> Int -> Int
helper lst elem offset =
case lst of
[] -> -1
x :: xs ->
if x == elem then offset
else helper xs elem (offset + 1)
indexOf lst element =
helper lst element 0
Run Code Online (Sandbox Code Playgroud)
helper递归地在列表中搜索元素,跟踪到目前为止我们访问过的元素数量.对于空列表,它返回-1.如果您不喜欢魔术常量,则可以轻松地将返回类型更改为Maybe Int并返回Nothing.
这是一个使用它的完整程序(只需复制+粘贴到elm-lang.org的在线REPL :
import Html exposing (text)
lst = ["Stack","Overflow","is","","awesome"]
element = ""
helper : List a -> a -> Int -> Int
helper lst elem offset =
case lst of
[] -> -1
x :: xs ->
if x == elem then offset
else helper xs elem (offset + 1)
indexOf lst element =
helper lst element 0
main =
text (toString (indexOf lst ""))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1441 次 |
| 最近记录: |