我如何检查数组是否被某个值填充?

问题描述 投票:0回答:4

我有数组,可以说

arr = [1,0,3,5,1,0]

如何检查整个数组是否仅包含0个值?我知道可以使用for循环并反复检查每个索引,直到到达数组末尾为止。喜欢

var onlyZeros = false
if arr.count > 0
{
  for i in(0..<arr.count)
  { 
   if arr[i] == 0
    {
      onlyZeros = true
     }
      else
    {
      onlyZeros = false
     }

   }
}
// do something with status of onlyZeros variable.

但是我想知道是否有任何更快/更简便的方法?由于阵列有时会非常大。我希望每次将新值添加到数组时都会发生这种情况。如果数组中填充了任何其他数字(1s 2s或任何其他数字),则不会发生任何事情

我搜索发现


extension Array where Element : Equatable {
    func allEqual() -> Bool {
        if let firstElem = first {
            return !dropFirst().contains { $0 != firstElem }
        }
        return true
    }
}

如果整个数组都填充相同的值,则可能返回true或false。

ios arrays swift
4个回答
0
投票

您可以像下面的示例中那样使用array.contains(value)

let elementsArray = [1, 2, 3, 4, 5]
let myValue = 5 <- or any other value you are looking
if elementsArray.contains(myValue) {
    print("yes")
}

-1
投票

您是说它是一个没有值的空数组?

如果是这种情况,则可以使用其他预定义的函数,例如empty(),isset()通过使用if / else语句来检查数组。


-1
投票

您可以使用allSatify这样的yourArray.allSatisfy{$0 == 0}来做。


-2
投票

要检查array是否包含所有相同的值,可以从Set创建array并检查Set是否包含单个元素。

extension Array where Element: Hashable {
    var allEqual: Bool {
        let set = Set(self)
        return (set.count == 1)
    }
}

在上面的代码中,我在allEqual中创建了一个[[计算属性 extension Array

示例:

let arr1 = [1,0,3,5,1,0] arr1.allEqual //false let arr2 = [0, 0, 0, 0] arr2.allEqual //true

编辑:

enter image description here
© www.soinside.com 2019 - 2024. All rights reserved.