Created
July 3, 2017 16:06
-
-
Save lawreyios/0804ac3226b419569b197aaa74976290 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//: Playground for : https://medium.com/@lawrey/swiftytutorial-map-properties-of-2-arrays-9da34c5e279d | |
import Foundation | |
enum CardType { | |
case debit | |
case credit | |
} | |
struct Bank { | |
var code: Int | |
var name: String | |
} | |
struct PaymentMethod { | |
var bankCode: Int | |
var bankName: String? | |
var endingNumber: String | |
var cardType: CardType | |
} | |
var banks: [Bank]? | |
banks = [ | |
Bank(code: 11, name: "DBS"), | |
Bank(code: 22, name: "HSBC"), | |
Bank(code: 33, name: "OCBC"), | |
Bank(code: 44, name: "SC") | |
] | |
var paymentMethod1 = PaymentMethod(bankCode: 11, bankName: nil, endingNumber: "1111", cardType: .debit) | |
var paymentMethod2 = PaymentMethod(bankCode: 22, bankName: nil, endingNumber: "2222", cardType: .debit) | |
var paymentMethod3 = PaymentMethod(bankCode: 33, bankName: nil, endingNumber: "3333", cardType: .credit) | |
var paymentMethod4 = PaymentMethod(bankCode: 44, bankName: nil, endingNumber: "4444", cardType: .credit) | |
var paymentMethods = [ | |
paymentMethod1, | |
paymentMethod2, | |
paymentMethod3, | |
paymentMethod4, | |
] | |
let mappedPaymentMethods = paymentMethods.map { paymentMethod -> PaymentMethod in | |
guard let banks = banks else { | |
return paymentMethod | |
} | |
var mutablePaymentMethod = paymentMethod | |
if let bank = banks.filter( { $0.code == paymentMethod.bankCode } ).first { | |
mutablePaymentMethod.bankName = bank.name | |
} | |
return mutablePaymentMethod | |
} | |
mappedPaymentMethods.forEach { (method: PaymentMethod) in print(method) } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment