Her*_*eis 4 arrays dictionary swift
我试图以一种优雅的方式实现以下行为:
users按id 重新排序userIds并过滤掉userid 不在的所有suserIds
试图以"Swifty方式"来做:
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 })!] })
Run Code Online (Sandbox Code Playgroud)
产生重新排序和过滤的预期结果.但是当代码userIds包含一个不属于userin users(例如4)的id 时代码崩溃,这要归功于force-unwrap.
我失去了什么让它在没有崩溃的情况下工作?
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)
Run Code Online (Sandbox Code Playgroud)
以下作品:
let m = userIds.flatMap { userId in users.filter { $0["id"] == userId }.first }
Run Code Online (Sandbox Code Playgroud)
它filter是找到正确的成员然后"平坦"生成的数组,删除空的选项.