Rurom
Rurom

Reputation: 253

Swift - Dictionary from 2 filtered arrays

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

Answers (1)

Serhii Didanov
Serhii Didanov

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

Related Questions