【问题标题】:how to compare two dictionaries which has two different count values to check pk and update the main dictionary and retrieve when table reloads如何比较具有两个不同计数值的两个字典以检查 pk 并更新主字典并在表重新加载时检索
【发布时间】:2020-06-16 06:27:08
【问题描述】:

我有两个具有不同计数值的数组,如下所示

Main array -  var productArray = [[String: Any]]() "greater count values than cart array"
Sub Array -  var cartArray = [[String: Any]]()  "less count values and some times empty"

这些是以下数组的响应

 Product Array:: [["pk": 5277, "quantity": 0], ["pk": 5281, "quantity": 0], ["pk": 5287, "quantity": 0], ["pk": 5292, "quantity": 0], ["pk": 5298, "quantity": 0], ["pk": 5303, "quantity": 0], ["pk": 5304, "quantity": 0], ["pk": 5309, "quantity": 0], ["pk": 5313, "quantity": 0], ["pk": 5319, "quantity": 0], ["pk": 4859, "quantity": 0], ["pk": 4867, "quantity": 0], ["pk": 7998, "quantity": 0]]

    Cart Array:: [["pk": 5298, "quantity": 3], ["pk": 7998, "quantity": 3], ["pk": 8046, "quantity": 1]]

我只想比较两者,如果两个数组的 pk 相同,我只想用购物车数组的 pk 更新产品数组。比如下面……

Product Array:: [["pk": 5277, "quantity": 0], ["pk": 5281, "quantity": 0], ["pk": 5287, "quantity": 0], ["pk": 5292, "quantity": 0], ["pk": 5298, "quantity": 3], ["pk": 5303, "quantity": 0], ["pk": 5304, "quantity": 0], ["pk": 5309, "quantity": 0], ["pk": 5313, "quantity": 0], ["pk": 5319, "quantity": 0], ["pk": 4859, "quantity": 0], ["pk": 4867, "quantity": 0], ["pk": 7998, "quantity": 0]]

“这里的常用值为5298”

请帮我一个清晰的最新 swift 代码 sn-p。

【问题讨论】:

    标签: ios arrays swift compare


    【解决方案1】:

    请检查以下代码:

    var productArray: [[String: Any]] = [
        [
            "pk": 1,
            "quantity": 0
        ],
        [
            "pk": 2,
            "quantity": 0
        ],
        [
            "pk": 3,
            "quantity": 0
        ],
        [
            "pk": 4,
            "quantity": 0
        ]
    ]
    
    let chartArray: [[String: Any]] = [
        [
            "pk": 1,
            "quantity": 100
        ],
        [
            "pk": 2,
            "quantity": 100
        ],
        [
            "pk": 3,
            "quantity": 100
        ]
    ]
    
    productArray = productArray.compactMap({ (product: [String: Any]) -> [String : Any]? in
    
        for chart in chartArray {
    
            guard let chartQuantity = chart["pk"] as? Int,
                let chartPK = chart["pk"] as? Int,
                let productPK = product["pk"] as? Int,
                chartPK == productPK else {
                    continue
            } // pass if have same pk value
    
            return [
                "pk": chartPK,
                "quantity": chartQuantity
            ]
        }
    
        return product
    })
    
    print(productArray.description)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多