2017-10-15 33 views
0
games = 
    [ { id = 1 
     , points = 
      [ { player_id = 1, score = 20 } 
      , { player_id = 2, score = 10 } 
      , { player_id = 3, score = 0 } 
      ] 
     } 
    , { id = 2 
     , points = 
      [ { player_id = 1, score = 20 } 
      , { player_id = 2, score = 5 } 
      , { player_id = 3, score = 0 } 
      ] 
     } 
    , { id = 3 
     , points = 
      [ { player_id = 1, score = 20 } 
      , { player_id = 2, score = 5 } 
      , { player_id = 3, score = 10 } 
      ] 
     } 
    ] 

我有一個'遊戲'記錄列表,每個記錄有每個玩家的點列表。 是否有可能通過fold每個玩家在每個遊戲中的每個得分來顯示「總計」。榆樹:摺疊多個列表的具體值

喜歡的東西:

[ { player_id = 1, score = 60 } 
, { player_id = 2, score = 20 } 
, { player_id = 3, score = 10 } 
] 

在此先感謝。

回答

2

你需要一個雙眼皮,其中關鍵代碼

main : Html msg 
main = 
    let 
     go { points } acc = 
      let 
       goInner { player_id, score } accInner = 
        Dict.update player_id (updater score) accInner 
      in 
      List.foldl goInner acc points 
    in 
    List.foldl go Dict.empty games 
     |> toString 
     |> text 

updater : Int -> Maybe Int -> Maybe Int 
updater score existingVal = 
    existingVal 
     |> Maybe.withDefault 0 
     |> (+) score 
     |> Just 

參見[https://ellie-app.com/gq8VFfS8Ja1/0](this艾莉) 這得到你想要的儘管是在一個稍微不同的格式

+0

輝煌的答案。謝謝。我有一些閱讀要做。 –