gpt4 book ai didi

elm - 记录列表中的最大值

转载 作者:行者123 更新时间:2023-12-02 04:08:37 26 4
gpt4 key购买 nike

假设我在 elm 中有一个记录列表:

[ { id = 1, magnitude = 100 }
, { id = 3, magnitude = 300 }
, { id = 2, magnitude = 200 } ]

我想获得震级值最大的记录(300)。有什么好的方法可以做到这一点?

docs给出了使用“maximum”方法的示例,但它使用简单的整数列表。记录是如何完成的?

最佳答案

根据 @robertjlooby 的建议更新

有一个函数叫 maximumBy在 elm-community/list-extra 中正是这样做的。示例:

List.Extra.maximumBy .magnitude list

原始答案

有几种方法可以实现这一目标。

第一种方法更简洁,但它涉及对整个列表进行排序,反转它,然后取出头部。

maxOfField : (a -> comparable) -> List a -> Maybe a
maxOfField field =
List.head << List.reverse << List.sortBy field

如果您想要更高效并且只遍历列表一次的东西,这里有一个更高效的版本:

maxOfField : (a -> comparable) -> List a -> Maybe a
maxOfField field =
let f x acc =
case acc of
Nothing -> Just x
Just y -> if field x > field y then Just x else Just y
in List.foldr f Nothing

它的使用示例:

list =
[ { id = 1, magnitude = 100 }
, { id = 3, magnitude = 300 }
, { id = 2, magnitude = 200 } ]

main =
text <| toString <| maxOfField .magnitude list

关于elm - 记录列表中的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38123827/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com