获取更短版本的for循环?

时间:2016-10-25 09:30:46

标签: arrays swift string optimization

我正在使用Swift 3.0并使用此代码搜索数组中的项目作为String类型的扩展名:

extension String {
    func equal(compareToArray : [String]) -> Bool {
        for s in compareToArray {
            if self == s {
                return true
            }
        }
        return false
    }
}

它运行正常,但我的问题是,我可以做得更好(更短/更简单或更快)吗?

好的,另一个类似的样本:

func contains(compareToArray : [String]) -> Bool {
    for s in compareToArray {
        if self.contains(s) {
            return true
        }
    }
    return false
}

2 个答案:

答案 0 :(得分:6)

更短,更简单,更快

let compareToArray = ["foo", "bar", "baz"]
compareToArray.contains("bar")

修改

根据你的第二个例子

!compareToArray.filter {$ 0.contains(“oo”)}。isEmpty

compareToArray.index(where: {$0.contains("oo")}) != nil

答案 1 :(得分:0)

如果你想检查一个元素是否属于一个数组,在Swift 3.0中这是一个更好的方法:

使用:

  

array.index(of:element) - >诠释?

例如:

let myArray = ["a", "b", "c"]
let needle = "b"

if let pos = myArray.index(of: needle') {
  print("\(needle) is in array at position : \(pos)" 
} else {
  print("It's not in array")
}