Как отфильтровать два словаря с несколькими ключами Swift 4? - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть два словаря.

[
["price": 65,   "sku": abcd], 
["price": 130,  "sku": efgh], 
["price": 195,  "sku": ijkl],
["price": 325,  "sku": mnop]
]

И:

[
["productId": abcd, "price": 79],
["productId": wxyz, "price": 79], 
["productId": opki,"price": 159], 
["productId": efgh, "price": 249],
["productId": ijkl, "price": 249], 
["productId": ytui, "price": 299], 
["productId": mnop, "price": 399] 
]

Я хочу сопоставить sku и productId.

Как я могуотфильтровать эти два словаря?Я пробовал метод фильтра, но он дает много ошибок.Я не думаю, что цикл является хорошей идеей для такого рода фильтрации.Может кто-нибудь мне помочь?Эти два типа: Array<Dictionary<String, Any>>.

Редактировать: что я пытался.

self.filteredArr = arr1?.filter{ $0["productId"] as! String == arr2![0]["sku"] as! String}

Но, это выдает несколько ошибок, и я не знаю, еслиэто правильный способ фильтрации.

1 Ответ

0 голосов
/ 27 сентября 2018

Попробуйте это

let filteredArray = array2.filter { dic2 in

    array1.contains(where: { dic1 in 
        dic1["sku"] as! String == dic2["productId"] as! String 
    })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...