Вместо словарей использовать структуры, это более удобно:
struct MyStruct {
let date: Date
let value: CGFloat
}
Давайте создадим 3 массива MyStruct
s:
let now = Date()
let later = now.addingTimeInterval(3600)
let earlier = now.addingTimeInterval(-3600)
let array1: [MyStruct] = [MyStruct(date: now, value: 1),
MyStruct(date: later, value: 2)]
let array2: [MyStruct] = [MyStruct(date: now, value: 3),
MyStruct(date: later, value: 4)]
let array3: [MyStruct] = [ MyStruct(date: earlier, value: 5),
MyStruct(date: later, value: 6)]
Теперь давайте сгруппируем элементы и добавимvalue
s для элементов с таким же свойством date
:
let allArrays = array1 + array2 + array3
let dict = Dictionary(allArrays.map { ($0.date, $0.value) },
uniquingKeysWith: { $0 + $1 })
Все, что вам нужно сделать сейчас, - это преобразовать его обратно в массив MyStruct
:
let newArray = dict.map { MyStruct(date: $0.key, value: $0.value) }
И вы можете проверить результаты так:
for element in newArray {
print("date =", element.date, "value =", element.value)
}