Reputation: 253
idsArr = [ ["id": "12345"], ["id": "27891"],["id": "98654"] ]
idsNameIntvalueArr = [["id": "22913", "name" : "Peter Parker", "value": 15], ["id": "12345", "name" : "Donald Duck", "value": 6], ["id": "98654", "name" : "Mickey Mouse", "value": 9], ["id": "112233", "name" : "Lion King", "value": 9]]
I'm new in Swift, please give me advice, what is the best practice to compare this 2 arrays by id, if id matches, how to get the array with dictionaries inside, in result like this:
resultArr = [["Donald Duck": 6],["Mickey Mouse": 9]]
or even better just a dictionary, if it possible:
resultdict = ["Donald Duck": 6, "Mickey Mouse": 9]
Thanks.
Upvotes: 1
Views: 88
Reputation: 2338
Swift 3.x
let idsArr = [ ["id": "12345"], ["id": "27891"],["id": "98654"] ]
let idsNameIntvalueArr = [["id": "22913", "name" : "Peter Parker", "value": 15], ["id": "12345", "name" : "Donald Duck", "value": 6], ["id": "98654", "name" : "Mickey Mouse", "value": 9], ["id": "112233", "name" : "Lion King", "value": 9]]
var result = [String:Int]()
idsNameIntvalueArr.forEach({ name in
idsArr.forEach({
if name["id"] as? String == $0["id"] { result[name["name"] as! String ] = name["value"] as? Int }
})
})
print(result)
Will return:
["Mickey Mouse": 9, "Donald Duck": 6]
Upvotes: 4