如何过滤重复元素直到有新元素出现
How to filter duplicated elements until a new one comes
我想过滤掉重复的元素,直到使用 Swift 的新元素出现。我想对整个数组执行此操作。
示例:[1,1,1,2,2,1]
输出:[1,2,1]
您可以使用 reduce(into:_:)
这样做:
let array = [1,1,1,2,2,1]
let filtered = array.reduce(into: [Int]()) { partialResult, current in
guard let last = partialResult.last else { partialResult.append(current); return }
if last != current {
partialResult.append(current)
}
}
print(filtered)
我们遍历数组。
partialResult
是当前正在填充的新数组。
我们检查是否已经有一个初始值,否则我们添加它。
然后,我们将 partialResult
的最后一个值与初始数组的当前迭代值进行比较,以决定是否将其附加到 partialResult
一旦你理解了逻辑,它也可以写成:
let filtered2 = array.reduce(into: [Int]()) { partialResult, current in
if partialResult.last != current {
partialResult.append(current)
}
}
print(filtered2)
我想过滤掉重复的元素,直到使用 Swift 的新元素出现。我想对整个数组执行此操作。
示例:[1,1,1,2,2,1]
输出:[1,2,1]
您可以使用 reduce(into:_:)
这样做:
let array = [1,1,1,2,2,1]
let filtered = array.reduce(into: [Int]()) { partialResult, current in
guard let last = partialResult.last else { partialResult.append(current); return }
if last != current {
partialResult.append(current)
}
}
print(filtered)
我们遍历数组。
partialResult
是当前正在填充的新数组。
我们检查是否已经有一个初始值,否则我们添加它。
然后,我们将 partialResult
的最后一个值与初始数组的当前迭代值进行比较,以决定是否将其附加到 partialResult
一旦你理解了逻辑,它也可以写成:
let filtered2 = array.reduce(into: [Int]()) { partialResult, current in
if partialResult.last != current {
partialResult.append(current)
}
}
print(filtered2)