如何将整数数组映射为字典值的键

时间:2017-09-27 04:26:35

标签: arrays swift dictionary

如果我有以下数组,并且我想通过将mysteryDoors数组映射为字典的键来创建包含门奖品的字符串数组,并将相应的值转换为新数组。

因此,我会得到[“礼品卡”,“汽车”,“假期”]的字符串数组,我该怎么办?

let mysteryDoors = [3,1,2]

let doorPrizes = [
    1:"Car", 2: "Vacation", 3: "Gift card"]

3 个答案:

答案 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;
}