如果我有以下数组,并且我想通过将mysteryDoors数组映射为字典的键来创建包含门奖品的字符串数组,并将相应的值转换为新数组。
因此,我会得到[“礼品卡”,“汽车”,“假期”]的字符串数组,我该怎么办?
let mysteryDoors = [3,1,2]
let doorPrizes = [
1:"Car", 2: "Vacation", 3: "Gift card"]
答案 0 :(得分:2)
您可以map()
将每个数组元素添加到相应的值中
词典。如果保证所有数组元素都是
作为字典中的键出现,你可以这样做:
let mysteryDoors = [3, 1, 2]
let doorPrizes = [ 1:"Car", 2: "Vacation", 3: "Gift card"]
let prizes = mysteryDoors.map { doorPrizes[$0]! }
print(prizes) // ["Gift card", "Car", "Vacation"]
如果没有密钥,为了避免运行时崩溃,请使用
let prizes = mysteryDoors.flatMap { doorPrizes[$0] }
忽略未知密钥,或
let prizes = mysteryDoors.map { doorPrizes[$0] ?? "" }
将未知键映射到默认字符串。
答案 1 :(得分:1)
如果您必须使用map
,那么它将类似于以下内容:
let array = mysteryDoors.map { doorPrizes[$0] }
答案 2 :(得分:0)
重新阅读Apple Doc示例代码并将其更改为我需要的代码。我相信这就是它(差不多)。不幸的是,它现在是带有新行的字符串格式......
let myPrizes = doorPrizes.map { (number) -> String in
var output = ""
output = mysteryDoors[number]!
return output;
}