【问题标题】:How I can delete (filter) object from embedded array?如何从嵌入式数组中删除(过滤)对象?
【发布时间】:2021-02-16 01:55:11
【问题描述】:

我在 Pet 中嵌入了一个结构 PetType,在 People 中嵌入了 Ped。我需要使用一些 PetType(过滤器)删除所有人。如何使用过滤器删除所有我不需要的人并保存正确的结构?我需要有皮肤柔软宠物的人(例如)

struct People {
    let name: String
    let pets: [Pet]
}

struct Pet {
    let name: String
    let type: PetstType
}

struct PetstType {
    let isSoftSkin: Bool
}


let peoples: [People] = []

【问题讨论】:

  • 你有没有尝试过?两者兼有的人呢?
  • 我尝试使用 people.map { people in people.map { pet in pet.filter { $0.isSoftSkin} } }。结果是 [[[PetsType]]]。但我需要一个保存模型。
  • 好吧,将您的尝试添加到问题中

标签: arrays swift struct filter


【解决方案1】:

另一种选择是使用removeAll(where:),但要使用它,peoples 数组必须是var

peoples.removeAll { $0.pets.contains(where: { pet in pet.type.isSoftSkin }) }

【讨论】:

    【解决方案2】:

    您可以使用filter 仅保留Array 中与指定条件匹配的元素。在filter 内部,您可以在pets 数组上调用contains(where:),以检查数组中是否有任何元素符合您的条件。

    let filteredPeople = people.filter { person in person.pets.contains(where: { pet in pet.type.isSoftSkin }) }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-21
      • 2021-11-08
      相关资源
      最近更新 更多