【问题标题】:How to filter two Dictionaries with multiple keys Swift 4?如何使用多个键 Swift 4 过滤两个字典?
【发布时间】:2018-09-27 06:58:11
【问题描述】:

我有两个字典。

[
["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 循环不是一个好主意。谁能帮我?这两个的类型是:Array<Dictionary<String, Any>>

编辑:我尝试过的。

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

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

【问题讨论】:

  • 你能分享你试过的代码吗?
  • 另外,字典似乎无效,是否应该引用 sku/productId 值?
  • @Cristik 添加了我尝试过的内容。而且,字典是有效的。其中一个来自苹果这边。
  • 我指的是abcd?他们不应该被引用吗,比如"abcd"
  • 它们是从服务器端引用的,而不是从苹果端引用的。

标签: arrays swift sorting filter


【解决方案1】:

试试这个

let filteredArray = array2.filter { dic2 in

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

【讨论】:

  • 感谢您的帮助。 a2 在这里吗,比如for a2 in 0...9
  • a2 只是一个变量,它只是 array2 中的字典。稍等,我会修改答案,以便您更好地理解。
  • 感谢您的解释。
猜你喜欢
  • 2021-06-04
  • 1970-01-01
  • 2017-04-22
  • 2019-01-05
  • 1970-01-01
  • 2021-05-18
  • 1970-01-01
  • 2013-04-11
  • 1970-01-01
相关资源
最近更新 更多