首页 > 解决方案 > Swift Array of Ints - 查找与前一个元素的差异大于 10 的索引

问题描述

我有以下数组:

let array = [1,3,2,1,4,3,99,3,5,2,1,45]

我想创建一个新数组 - 其中与前一个元素的差异大于 10 的元素设置为 0。

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

目前,我正在创建一个具有差异的新数组,然后过滤该数组以找到大于 10 的数组,然后比较这些数组 - 我觉得这一切都过于复杂了。

let diffArray = zip(array.dropFirst(), array).map(-) 
let filteredArray = diffArray.filter {abs($0) > 10}

谢谢!

标签: arraysswiftfilterint

解决方案


这应该这样做。不过没有什么花哨的。

let array = [1,3,2,1,4,3,99,3,5,2,1,45]

func resetValues(withDifference difference: Int, in array: inout [Int]) {
    for index in array.indices.dropFirst() {
        if abs(array[index - 1] - array[index]) >= 10 {
            array[index] = 0
        }
    }
}

resetValues(withDifference: 10, in: &array)
print(array)

推荐阅读