Swift中的Array of struct [已关闭]

t3irkdon  于 2023-10-15  发布在  Swift
关注(0)|答案(2)|浏览(140)

已关闭,此问题需要details or clarity。它目前不接受回答。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

昨天关门了。
Improve this question
我想找到“village1”数组中所有“country”与“village2”中的peson相同的人的“age”。任何一个请帮助。
例如,在“村庄2”希娜是目前谁拥有国家名称美国。在“village1”中,“jullie”和“mike”具有相同的国家美国。所以我想知道朱莉和迈克的年龄。

struct person {
    var name: String
    var country: String
    var age: Int
    
}
let person1 = person(name: "john", country: "Brazil", age: 21)
let person2 = person(name: "jullie", country: "Usa", age: 20)
let person3 = person(name: "ricky", country: "hungary", age: 23)
let person4 = person(name: "mike", country: "Usa", age: 29)

let person5 = person(name: "heena", country: "Usa", age: 55)
let person6 = person(name: "ben", country: "brazil", age: 55)

let village1 = [person1, person2, person1]
let village2 = [person5, person6]

village2.forEach { person in
    var policyDetailsArray = person.filter { $0.country == village1.country}
    print(policyDetailsArray)
}

获取问题:类型“[person]”的值没有成员“country”。

qvtsj1bj

qvtsj1bj1#

  • 我想找到“village1”数组中所有人的“年龄”*

所以,一种方法是,我们需要用village1做一个循环,这样我们就可以得到所有人的年龄。在里面,我们应用village2过滤器的国家。

village1.forEach { person in
  if let policyDetailsArray = village2.filter { $0.country == person.country}.first {
    print(person)
  }
}
4bbkushb

4bbkushb2#

  • 首先,你可以在village 2中找到独特的国家。
  • 创建一个字典来按国家存储年龄
  • 然后循环通过收集的独特国家。
  • 筛选第一个集合中与第二个集合中的当前国家/地区相同的人员。
  • 最后,你可以提取和打印这些独特的人的年龄。
let countriesInVillage2 = Set(village2.map {$0.country})
 var agesByCountry = [String: [Int]]()

 for country in countriesInVillage2 {
        let personsInVillage1WithSameCountry = village1.filter { $0.country == country }
        let ages = personsInVillage1WithSameCountry.map { $0.age }
        agesByCountry[country] = ages
        print("Ages of persons in village1 from \(country): \(ages)")   
    }

 for (country, ages) in agesByCountry {
    let agesString = ages.map { String($0) }.joined(separator: ", ")
    print("\(country): [\(agesString)]")
  }

相关问题