arrays - 如何使用多个键 Swift 4 过滤两个字典?

标签 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 .

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

编辑:我尝试过的。

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

但是,它会抛出多个错误,我不知道这是否是正确的过滤方式。

最佳答案

试试这个

let filteredArray = array2.filter { dic2 in

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

关于arrays - 如何使用多个键 Swift 4 过滤两个字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52531194/

相关文章:

arrays - 在 Perl 中从数组中删除值的最佳方法是什么?

java - 如何在 Android 中使用 For 循环创建对象数组

swift - 如何使用Swift将句子的第一个字符大写

json - Bittrex API - Swift 中的 JSON 结构

c# - 排序一个字符数组,使所有元音都出现在最后

java - AngularJS $http get 返回 null 状态 0

c++ - 如何有条件地将元素添加到 std::array - C++11

swift - 使用 Swift 在函数中返回泛型类型(无法转换类型的返回表达式...)

Java ArrayList 按相同顺序对两个列表进行排序

c++ - 如何在 C++ 中对长 vector 使用 std::sort()?