arrays - 如何查找数组中重复项的索引

标签 arrays swift

我有一个图表,我需要从数组和“0”中删除重复值,例如我想根据那个调整数组


extension Array where Element: Equatable {
    var unique: [Element] {
        var uniqueValues: [Element] = []
        forEach { item in
            if !uniqueValues.contains(item) {
                uniqueValues += [item]
            }
        }
        return uniqueValues
    }
}

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"]

speed.unique // Return Only Unique Values 

现在我想更新我的时间数组。 例子 Index : 0, 3 - 从 speed 中移除 我也想从时间中删除索引 0、3

最佳答案

你可以这样做:

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 }

关于arrays - 如何查找数组中重复项的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56070166/

相关文章:

java - 创建一个 JButton 数组

python - 根据另一个具有上限和下限的数组中的值选择一个数组的子集

javascript - 有没有一种优雅的方法可以将变量名中的单个单词提取到数组中?

swift - 使用 ImagePickerController 拍摄视频/照片并在不同 View 上使用它们

c++ - 溢出的 char 数组每次都会覆盖完全相同的字符串 - 为什么?

Java:将每个字母转换为数字,例如a = 1,b = 2,c = 3

ios - UIViewController 如何设法在 Swift 中拥有默认的无参数初始化程序?

ios - UILabel 边框和填充

layout - 如何全屏显示网页 View (自动调整)

类型 'AppDelegate' 的 IOS Dev 值没有成员 'managedObjectContext' Xcode 10