如果我有以下數組,並且想通過將mysteryDoors數組映射爲字典的鍵來創建包含門獎勵的字符串數組,並將相應的值一個新的陣列。如何將整數數組映射爲字典值的鍵
因此,我會得到一個[「禮品卡」,「汽車」,「度假」]的字符串數組我如何做到這一點?
let mysteryDoors = [3,1,2]
let doorPrizes = [
1:"Car", 2: "Vacation", 3: "Gift card"]
如果我有以下數組,並且想通過將mysteryDoors數組映射爲字典的鍵來創建包含門獎勵的字符串數組,並將相應的值一個新的陣列。如何將整數數組映射爲字典值的鍵
因此,我會得到一個[「禮品卡」,「汽車」,「度假」]的字符串數組我如何做到這一點?
let mysteryDoors = [3,1,2]
let doorPrizes = [
1:"Car", 2: "Vacation", 3: "Gift card"]
您可以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] ?? "" }
將未知鍵映射到默認字符串。
如果你必須使用map
,那麼它看起來像下面這樣:
let array = mysteryDoors.map { doorPrizes[$0] }
重新閱讀Apple Doc示例代碼並將其更改爲我需要的內容。我相信這是(幾乎)。不幸的是,它現在用新行的字符串格式...
let myPrizes = doorPrizes.map { (number) -> String in
var output = ""
output = mysteryDoors[number]!
return output;
}
是的。你可以用map {mysteryDoors [$ 0])來減少它! '儘可能多的人回答。 – sCha