如何使用多个键Swift 2过滤两个Dictionary?

时间:2018-09-27 06:58:12

标签: arrays swift sorting filter

我有两个字典。

[
["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] 
]

我要匹配skuproductId

如何过滤这两个词典?我试过了filter方法,但它给出了很多错误。对于这种过滤,我认为for循环不是一个好主意。谁能帮我?这两种类型是:Array<Dictionary<String, Any>>

编辑:我尝试过的事情。

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

但是,它引发了多个错误,我不知道这是否是正确的过滤方法。

1 个答案:

答案 0 :(得分:1)

尝试一下

let filteredArray = array2.filter { dic2 in

    array1.contains(where: { dic1 in 
        dic1["sku"] as! String == dic2["productId"] as! String 
    })
}