Swift - как изменить значения одного ключа в массиве словарей, используя другой массив - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть массив из 3 словарей, который выглядит примерно так:

array1 = [["measure1":"90", "measure2":"200","measure3":"23", "measure4":"190"],["measure1":"60", "measure2":"340","measure3":"531", "measure4":"2000"],["measure1":"210", "measure2":"2","measure3":"12", "measure4":"743"]]

Тогда у меня также есть массив, подобный этому:

array2 = ["10","20","30"]

Я пытаюсь заменить всезначения «measure4» в массиве словарей со значениями в array2 в порядке (т. е. первое «measure4» становится «10», второе «20» и т. д.)

Такое чувство, что ответ должен бытьпросто, но я пробовал разные варианты циклов in in, и ничто не выдает правильный массив словарей, который должен выглядеть следующим образом:

array1 = [["measure1":"90", "measure2":"200","measure3":"23", "measure4":"10"],["measure1":"60", "measure2":"340","measure3":"531", "measure4":"20"],["measure1":"210", "measure2":"2","measure3":"12", "measure4":"30"]]

Любая помощь очень ценится.

Ответы [ 3 ]

0 голосов
/ 18 сентября 2018

Попробуйте этот код:

let new = array1.enumerated().reduce([[String: String]](), { acc, elemEnumerated in
    var mutableDict = elemEnumerated.element
    mutableDict["measure4"] = array2[elemEnumerated.offset]
    return acc + [mutableDict]
})
0 голосов
/ 18 сентября 2018
array1[0]["measure4"]? = array2[0]
array1[1]["measure4"]? = array2[1]
array1[2]["measure4"]? = array2[2]

или как петля

for i in 0..<min(array1.count, array2.count) {
    array1[i]["measure4"]? = array2[i]
}
0 голосов
/ 18 сентября 2018
for (i, x) in array2.enumerated() {
    array1[i]["measure4"] = x
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...