Вы можете сделать это так:
let speed = [ 0, 10, 20, 20, 40, 50, 50, 50, 80, 90, 100]
let time = ["9", "10", "11", "12", "13", "15", "16", "17", "18", "19", "20"]
var sp = [Int]()
var tm = [String]()
for (i, x) in speed.enumerated() {
if !sp.contains(x) {
sp.append(x)
tm.append(time[i])
}
}
print(sp) //[ 0, 10, 20, 40, 50, 80, 90, 100]
print(tm) //["9", "10", "11", "13", "15", "18", "19", "20"]
Рекомендуется выбрать подходящий тип для time
.
В объектно-ориентированном программировании рекомендуется указывать скорость и время в качестве свойств структуры:
struct Mover {
let speed: Int
let time : TimeInterval
}
Например, для данного массива:
let movers = [Mover(speed: 0, time: 9),
Mover(speed: 10, time: 10),
Mover(speed: 20, time: 11),
Mover(speed: 20, time: 12),
Mover(speed: 40, time: 13),
Mover(speed: 50, time: 15),
Mover(speed: 50, time: 16),
Mover(speed: 50, time: 17),
Mover(speed: 80, time: 18),
Mover(speed: 90, time: 19),
Mover(speed: 100, time: 20)]
Вы можете сохранить элементы с уникальной скоростью следующим образом:
var speeds = Set<Int>()
let moversUniqueSpeed = movers.filter { speeds.insert($0.speed).inserted }