как сравнить два словаря, у которых есть два разных значения счетчика, чтобы проверить pk и обновить основной словарь и получить его при перезагрузке таблицы - PullRequest
0 голосов
/ 16 июня 2020

У меня есть два массива с разными значениями подсчета, такими же, как показано ниже

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"

пожалуйста, помогите мне в ясном последнем фрагменте быстрого кода.

1 Ответ

0 голосов
/ 16 июня 2020

Пожалуйста, проверьте коды ниже:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...