使用reduce(into:_:)过滤相邻的相等元素

lre*_*old 2 arrays fold swift

Swift 标准库 API 指定 Array 有一个方法reduce(into:_:),该方法返回使用给定闭包组合序列元素的结果。

API 文档提到“您可以在整数数组上使用此方法来过滤相邻的相等条目”。有人可以提供一个如何做到这一点的例子吗?

vac*_*ama 6

您可以像这样消除相同数量的运行:

let numbers = [1, 1, 2, 2, 2, 3, 4, 4, 5, 4, 3]
let filtered = numbers.reduce(into: [Int]()) { newArray, number in
    if newArray.last != number { newArray.append(number) }
}

print(filtered)
Run Code Online (Sandbox Code Playgroud)

[1, 2, 3, 4, 5, 4, 3]