J'ai Array qui contient un ID comme
Var arr2 = [["ID":"782","AmenitiesURL":"xyx.com"],["ID":"783","AmenitiesURL":"xybx.com"],["ID":"784","AmenitiesURL":"xyax.com"]]
Et un Arr Of Dictionary comme
var ID = ["782", "783", "784", "785", "786", "788", "789", "790", "791", "792", "793", "795", "805"]
Voir également dans l'image. Maintenant, je veux obtenir l'url de l'ID.
Ex. if arr ID
= 784
Alors je veux trouver cet ID
dans arr2
et obtenir leur url et ajoutez dans Nouveau tableau,
En bref Deux tableaux l'un est pour ID
et l'autre pour URL
.
3 Réponses :
Vous pouvez faire fonctionner cela en utilisant l'approche suivante:
print(urls) //["xyx.com", "xybx.com", "xyax.com"]
Résultat:
let urls = ID.compactMap { (id) in return arr2.first(where: {$0["ID"] == id})?["AmenitiesURL"] }
Pour tous les identifiants dans ID array
, vous obtiendrez les valeurs FacilitiesURL
de arr2 array
.
Pour obtenir l'URL d'un identifiant spécifique
let id = "784" if let dict = arr2.first(where: { $0["ID", default:""] == id }), let urlString = dict["AmenitiesURL"] { print(urlString) }
Une autre approche. Bien que celui-ci conserve la structure de arr2
let filteredArray = arr2.filter { dict -> Bool in for id in ID{ if dict["ID"] == id{ return true } } return false }
Remplacez le tableau de dictionnaire par un tableau struct. IMO, vous ne devriez jamais avoir le tableau dict en premier lieu.