您可以创建自己的使用谓词作为参数的索引方法:
Xpre 11•Swift 5.1
extension Collection where Element: Equatable { func indices(of element: Element) -> [Index] { indices.filter { self[$0] == element } }}extension Collection { func indices(where isIncluded: (Element) throws -> Bool) rethrows -> [Index] { try indices.filter { try isIncluded(self[$0]) } }}let arr = [1, 2, 3, 1, 0, 1, 2, 2, 3, 1, 1, 2]let search = 1let indices = arr.indices(where: { $0 == search })// or simply// let indices = arr.indices { $0 == search }print(indices) // [0, 3, 5, 9, 10]let indices2 = arr.indices(of: search)print(indices2) // [0, 3, 5, 9, 10]let string = "Hello World !!!"let indices3 = string.indices(of: "o")print(indices3) // [Swift.String.Index(_compoundOffset: 16, _cache: Swift.String.Index._Cache.character(1)), Swift.String.Index(_compoundOffset: 28, _cache: Swift.String.Index._Cache.character(1))]


