【问题标题】:Swift how to filter 2 arraySwift如何过滤2个数组
【发布时间】:2021-09-24 07:12:51
【问题描述】:

我是 Swift 新手,不知道如何过滤这两个数组

var arrayOfFavoriteRoomsId = ["1", "2"]
var arrayOfRooms = [
    VoiceRoom(id: "1", title: "Room1", description:"Test room1"), 
    VoiceRoom(id: "2", title: "Room2", description:"Test room2"), 
    VoiceRoom(id: "3", title: "Room3", description:"Test room3")
]

最终的数组应该是这样的

var filteredArray = [
        VoiceRoom(id: "1", title: "Room1", description:"Test room1"), 
        VoiceRoom(id: "2", title: "Room2", description:"Test room2")
    ]

这就是我的模型的样子

struct VoiceRoom: Identifiable, Decodable {
  var id: String
  var title: String
  var description: String
}

【问题讨论】:

  • 你提到排序过滤...你到底需要什么?
  • 在解决问题之前,您必须能够清楚地定义它。你到底是什么意思?您是说要过滤数组arrayOfRooms 以仅包含ID 位于数组arrayOfFavoriteRoomsId 中的项目吗?如果是这样,说明目标可以帮助您弄清楚如何解决它。 (请参阅 Sergio 的回答,假设这是您想要做的。)

标签: arrays swift swiftui


【解决方案1】:
arrayOfRooms.filter { room in
    arrayOfFavoriteRoomsId.contains(room.id)
}

如果你也想对它们进行排序:

arrayOfRooms.filter { room in
    arrayOfFavoriteRoomsId.contains(room.id)
}.sorted(by: { $0.id < $1.id })

【讨论】:

  • 非常感谢您的帮助
猜你喜欢
  • 2016-06-05
  • 2016-06-11
  • 1970-01-01
  • 2012-03-12
  • 1970-01-01
  • 2021-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多