arrays - Swift 3 - 使用数组中的值按字典值过滤和排序字典数组

标签 arrays swift dictionary

我正在尝试以优雅的方式实现以下行为:

Reorder users by the id in userIds and filter out all users whose id isn't in userIds

尝试以“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/

相关文章:

javascript - Rxjs 映射和过滤数组 - 返回单个对象而不是一个数组?

arrays - SwiftUI 复选标记单行

java - 有条件地计算 ConcurentHashMap 中的值并每隔一定时间替换它

python - 使用 get 与 get() 在 NLTK 中对 FreqDist 进行排序

arrays - 在数组中查找不是重复三次的元素?

php - 将 SQL 查询的多行推送到单个 PHP 数组项中

swift - ORKTaskViewController - isNavigationBarHidden

swift - 在用户默认值中存储 Firestore 时间戳

ios - 由于未捕获的异常 'NSInvalidArgumentException' 而终止应用程序,原因 : '-[_. AppDelegate add:]: 无法识别的选择器

python - 在 Python 3 中对字典列表进行排序