1
votes

Filtrer le dictionnaire avec la valeur Array

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.

entrez la description de l'image ici


1 commentaires

Remplacez le tableau de dictionnaire par un tableau struct. IMO, vous ne devriez jamais avoir le tableau dict en premier lieu.


3 Réponses :


0
votes

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 .


0 commentaires

0
votes

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)
}


0 commentaires

0
votes

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
}


0 commentaires