如何找到数组的第一个非零元素?

Mar*_*rta -3 arrays ios swift

有没有办法从一组数字中获取第一个非零元素?

我有一个在开头有很多零的数组,我只需要第一个不是零的项目.

例如:

let array = [0,0,0,0,25,53,21,77]
Run Code Online (Sandbox Code Playgroud)

基于以上所述,结果应为25.

实现它的好方法是什么?

Ahm*_*d F 6

你可以这样得到它:

let array = [0,0,0,0,25,53,21,77]

let firstNonZero = array.first { element -> Bool in
    return element != 0
}
Run Code Online (Sandbox Code Playgroud)

或者作为较短的版本:

let firstNonZero = array.first(where: { $0 != 0 })
Run Code Online (Sandbox Code Playgroud)


请注意,这firstNonZero将是一个可选的 Int,因此如果array只包含零,firstNonZero则为nil.


除了栏注:如果你想知道为什么要使用first(where:)而不是filter(_:).first,你可以检查这个问题:

filter(_ :).first和first(where :)之间有什么区别?