很想知道是否有更好的方法来做到这一点。我有一个包含整数的数组。所有整数都是唯一的。我想搜索给定的数字并返回第一个数组的索引。我不关心包含数字的数组的索引是什么。
这就是我想要的,但我是新手,并且认为有更好的方法。
let arr:[[Int]] = [[0], [1], [2, 3], [4], [11, 12, 13, 14, 15, 16], [5], [6], [7], [8], [9], [10]]
var t = -1
for q in arr {
t += 1
if let x = q.index(of: 13) { // <-- looking for the index that contains 13
print ("t: \(t)") // <-- this is what I want. Returns '4'
}
}
答案 0 :(得分:1)
这是一种方式:
let arr: [[Int]] = [[0], [1], [2, 3], [4], [11, 12, 13, 14, 15, 16], [5], [6], [7], [8], [9], [10]]
for (i, a) in arr.enumerated() {
if let _ = a.index(of: 13) {
print(i)
}
}
它使用集合的enumerated()
方法。它返回一个元组,其中包含数组i
的索引和数组a
的实际元素。
这是函数式编程版本,如果这更符合您的风格:
arr.enumerated().map { $0 }.map { i, a in
if let _ = a.index(of: 13) {
print(i)
}
}
答案 1 :(得分:1)
使用index(where:
let arr: [[Int]] = [[0], [1], [2, 3], [4], [11, 12, 13, 14, 15, 16], [5], [6], [7], [8], [9], [10]]
if let index = arr.index(where: { $0.contains(13) }) {
print(index)
} else {
print("not found")
}