【问题标题】:Divide the data of array to two arrays将数组的数据分成两个数组
【发布时间】:2025-12-24 15:40:10
【问题描述】:

我正在从类似的 json 中获取一系列数据

   [
  {
   "name": "david",
    "gender": "Male"
  },
  {
    "name": "Sara",
    "gender": "Female"
  },
  {
    "name": "Philipp",
    "gender": "Male"
  },
  {
    "name": "Marry",
    "gender": "Female"
  }
]

我得到这些数据并将它们存储到一个数组中

我们称之为names

现在我想创建另外两个数组

femaleNames

maleNames

我想根据数据的性别类型保存femaleNames 中的所有女性姓名和maleNames 中的所有男性姓名。 我不知道如何在 swift 5 中实现这个条件。你能帮帮我吗? 谢谢

【问题讨论】:

  • 你想要只是名字还是想要分开不同性别的“人”?

标签: arrays swift


【解决方案1】:

假设您的数据有一个模型结构,如下所示:

enum Gender: Decodable, String {
    case female = "Female"
    case male = "Male"
}

struct NameEntry: Decodable {
    let name: String
    let gender: Gender
}

并在

中给出了一堆名字
var names: [NameEntry]

您可以使用轻松过滤

let femaleNames = names.filter { $0.gender == .female }
let maleNames = names.filter { $0.gender == .male }

【讨论】:

    【解决方案2】:

    您可以对数组使用过滤器;

    
    struct YourStruct: Decodable {
        let name: String
        let gender: String
    }
    
    let femaleNames = names.filter( { $0.gender == "Female"})
    let maleNames = names.filter( { $0.gender == "Male"})
    

    【讨论】:

    • 可能需要在其中包含一个注释,假设您已将数组编码为某种结构/类,这些结构/类具有gender 并且可能具有name 属性。
    • 非常感谢,但我怎么能说是男性这样做还是女性这样做呢?
    • 您应该将 JSON 数据解码为结构,然后使用过滤器。我更新它并添加结构