我有数组,可以说
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。
您可以像下面的示例中那样使用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")
}
您是说它是一个没有值的空数组?
如果是这种情况,则可以使用其他预定义的函数,例如empty(),isset()通过使用if / else语句来检查数组。
您可以使用allSatify
这样的yourArray.allSatisfy{$0 == 0}
来做。
要检查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
编辑: