Elm access如何在列表中多个对象
我在Elm lang中有以下代码:Elm access如何在列表中多个对象,elm,Elm,我在Elm lang中有以下代码: import Json.Decode exposing (..) import Html exposing (..) json = -- List that contains and will have many users """ [{\"ssn\":\"111.111.111-11\",\"name\":\"People Silva\",\"email\":\"people@eat.com\"}, {\"ssn\":\"000.000.000-0
import Json.Decode exposing (..)
import Html exposing (..)
json = -- List that contains and will have many users
"""
[{\"ssn\":\"111.111.111-11\",\"name\":\"People Silva\",\"email\":\"people@eat.com\"}, {\"ssn\":\"000.000.000-00\",\"name\":\"Pet Silva\",\"email\":\"pet@eat.com\"}]
"""
type alias User =
{ name : String
, email: String
, ssn: String
}
userDecoder : Json.Decode.Decoder User
userDecoder =
Json.Decode.map3 User
(field "name" string)
(field "email" string)
(field "ssn" string)
userListDecoder : Json.Decode.Decoder (List User)
userListDecoder =
Json.Decode.list userDecoder
main =
let
decoded = (decodeString userListDecoder json)
in
case decoded of
Ok u ->
span [] [text (toString u)]
Err e ->
span [] [text (toString e)]
这段代码工作得很好,并输出以下内容(如何预期):
我开始怀疑,如何获得列表中所有用户的列表?(作为奖励,获得列表中的用户数)
用户位于
列表用户
值中,因此您可以使用访问它们
如果要从用户列表中获取用户名列表,可以调用list.map.name users
如果要将用户名写入其自己的div中,可以这样编写:
showUser : User -> Html msg
showUser user =
div [] [ text user.name ]
main =
let
decoded = (decodeString userListDecoder json)
in
case decoded of
Ok users ->
div [] (List.map showUser users)
Err e ->
span [] [text (toString e)]
从main
调用它,如下所示:
showUser : User -> Html msg
showUser user =
div [] [ text user.name ]
main =
let
decoded = (decodeString userListDecoder json)
in
case decoded of
Ok users ->
div [] (List.map showUser users)
Err e ->
span [] [text (toString e)]
获取列表的长度只需使用函数:
list.length users
您的意思是您只需要一个包含所有用户名的列表吗?感谢您提供的速度、简单性和效率。