如何更新列表的一个元素

时间:2016-04-04 14:32:39

标签: list dictionary updates elm

我有一个update功能,可以使用postID和标题来更新我的帖子。

我想循环搜索帖子以查找帖子并更新其值。我尝试使用List.map,但我不知道放在这里的位置。这是我想要的伪代码:

update action model =
  case action of
    UpdateTitle postID title ->
      //something like this:
      for post in model.posts :
        if post.id == postID then
          { post | title = title }

      ( model.posts , Effects.none )

1 个答案:

答案 0 :(得分:6)

您可以使用List.map,传入仅使用匹配ID更新帖子的映射函数。

update action model =
  case action of
    UpdateTitle postID title ->
      ( List.map (setTitleAtID title postID) model.posts , Effects.none )

setTitleAtID title postID post =
  if post.id == postID then
    { post | title = title }
  else
    post