我正在尝试以优雅的方式实现以下行为:
Reorder
users
by the id inuserIds
and filter out alluser
s whose id isn't inuserIds
尝试以“swift 方式”做到这一点:
var users = [["id": 3, "stuff": 2, "test": 3], ["id": 2, "stuff": 2, "test": 3], ["id": 1, "stuff": 2, "test": 3]]
var userIds = [1, 2, 3]
userIds.map({ userId in users[users.index(where: { $0["id"] == userId })!] })
产生重新排序和过滤的预期结果。但是,当 userIds
包含不属于 users
中的 user
的 ID 时,代码会崩溃(例如 4
) 多亏了强制解包。
我缺少什么才能让它正常工作而不会崩溃?
最佳答案
var users = [
["id": 3, "stuff": 2, "test": 3],
["id": 2, "stuff": 2, "test": 3],
["id": 1, "stuff": 2, "test": 3]
]
var userIds = [2, 1, 3]
let filteredUsers = userIds.flatMap { id in
users.first { $0["id"] == id }
}
print(filteredUsers)
关于arrays - Swift 3 - 使用数组中的值按字典值过滤和排序字典数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44182122/