【问题标题】:extract contacts account displayname from account using High order function使用高阶函数从帐户中提取联系人帐户显示名称
【发布时间】:2020-10-28 14:51:43
【问题描述】:

这是之前question 的第 2 部分。我想为每个联系人标记一个帐户的显示名称。我不是按帐户的显示名称查找组

快速代码

self.contacts = result.accounts.map(\.contacts!).flatMap{$0}
self.filteredContacts = self.contacts
self.accountDisplayName = result.accounts.map(\.displayName).flatMap{$0}
self.filteredAccountDisplayName = self.accountDisplayName

json

{
   "Accounts":[
      {
         "AccountID":"ef391c24-ad5b-4dca-98ae-b55793dfc029",
         "Contacts":[
            {
               "AccountID":"ef391c24-ad5b-4dca-98ae-b55793dfc029",
               "AvatarImage":"",
               "ContactEmail":"cbacon@associates.com",
               "ContactID":"f74d3810-625f-43d4-afd4-89346a73f807",
               "ContactTitle":"Chief Executive Officer",
               "DisplayName":"Ch  Bacon",
               "FirstName":"Ch",
               "LastName":"Baco",
               "ManagedByStakeholderID":"97e5f0d5-df0d-48fe-bbbb-cccf251f4175",
               "Notes":"OWNER",
               "Roles":[
                  {
                     "RoleEnvironmentName":"",
                     "RoleEnvironmentTenantName":"",
                     "RoleID":"3a824b1e-26d6-41c5-8336-4b79f0962c38",
                     "RoleName":"Environment Administrator"
                  }
               ],
               "StakeholderID":"97e5f0d5-df0d-48fe-bbbb-cccf251f4175",
               "id":"f74d3810-625f-43d4-afd4-89346a73f807"
            }
         ],
         "DisplayName":"Chris Associates Ltd."
      },
      {
         "AccountID":"C31ACAD6-0E5D-43E0-B1A2-E51FD46BFE3A",
         "Contacts":[
            {
               "AccountID":"C31ACAD6-0E5D-43E0-B1A2-E51FD46BFE3A",
               "AvatarImage":"http://www.image.com/",
               "ContactEmail":"jhgjhg@njkjk.com",
               "ContactID":"28fad61f-9a47-41db-888e-19d66de96638",
               "ContactTitle":"",
               "DisplayName":"fvdfvdf",
               "FirstName":"dfvdfv",
               "LastName":"dfvdfv",
               "ManagedByStakeholderID":"97e5f0d5-df0d-48fe-bbbb-cccf251f4175",
               "Notes":"",
               "Roles":[
                  
               ],
               "StakeholderID":"43d3af87-fd21-404c-9af6-2998e401fcb8",
               "id":"28fad61f-9a47-41db-888e-19d66de96638"
            }
         ],
         "DisplayName":"adidas "
      },
      {
         "AccountID":"A4FBDC11-AB07-47BD-8364-0B1D81D8E38F",
         "Contacts":[
            {
               "AccountID":"A4FBDC11-AB07-47BD-8364-0B1D81D8E38F",
               "AvatarImage":"http://www.image.com/",
               "ContactEmail":"jeff@linkedin.com",
               "ContactID":"c205d05d-c4cf-46b2-a9fd-e85af2f317b9",
               "ContactTitle":"",
               "DisplayName":"Jeff Weiner",
               "FirstName":"Jeff",
               "LastName":"Weiner",
               "ManagedByStakeholderID":"97e5f0d5-df0d-48fe-bbbb-cccf251f4175",
               "Notes":"",
               "Roles":[
                  
               ],
               "StakeholderID":"c6fc9b6e-f857-4ca1-8352-dc55b05a9373",
               "id":"c205d05d-c4cf-46b2-a9fd-e85af2f317b9"
            }
         ],
         "DisplayName":"LinkedIn. Inc "
      }
   ]
}

【问题讨论】:

  • 你有什么问题?
  • 我正在尝试整理数据我想提取联系人和帐户。例如 [(contact, account.DisplayName),(contact2, account.DisplayName1)]]

标签: json swift


【解决方案1】:

使用 flatMap 然后映射加入账户和联系人

let values = results.accounts
    .flatMap { account in account.contacts.map { ($0, account.displayName) } }

例子

let accounts = [
    Account(accountID: "1", displayName: "A", managedByStakeholderID: nil, id: nil,
            contacts: [
                Contact(firstName: "a1", lastName: "a1", displayName: "aa1"),
                Contact(firstName: "a2", lastName: "a2", displayName: "aa2"),
            ]),
    Account(accountID: "2", displayName: "B", managedByStakeholderID: nil, id: nil,
            contacts: [
                Contact(firstName: "b", lastName: "b", displayName: "bb"),
            ])
]

产量

[(联系人:aa1,可选(“A”)),(联系人:aa2,可选(“A”)),(联系人:bb,可选(“B”))]

【讨论】:

  • 这将创建一个按 account.displayName [([Contact], String?)] 我需要 [(Contact, String?)] 的联系人组数组
  • @NinjaDeveloper 我已经用给定的 json 和我自己的数组对此进行了测试,在这两种情况下我都得到了预期的结果
猜你喜欢
  • 2021-02-03
  • 1970-01-01
  • 1970-01-01
  • 2018-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多