Hãy nói rằng tôi có mảng này:Làm cách nào để tìm chỉ mục của một mục trong một mảng đa chiều nhanh chóng?
let a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Bây giờ tôi muốn một cái gì đó như thế này:
public func indicesOf(x: Int, array: [[Int]]) -> (Int, Int) {
...
}
vì vậy mà tôi có thể gọi nó như thế này:
indicesOf(7, array: a) // returns (2, 0)
Tất nhiên, tôi có thể sử dụng:
for i in 0..<array.count {
for j in 0..<array[i].count {
if array[i][j] == x {
return (i, j)
}
}
}
Nhưng đó không phải là ngay cả gần swifty!
Tôi muốn có cách để thực hiện điều này nhanh chóng. Tôi nghĩ có lẽ tôi có thể sử dụng reduce
hoặc map
?
Nó không có ý nghĩa khi sử dụng 'map/filter/reduce' cho trường hợp này bởi vì bạn không cần phải chuyển đổi danh sách thứ gì đó thành danh sách của một điều khác. Bạn chỉ cần làm một số loại kiểm tra bình đẳng giữa các giá trị bằng cách sử dụng 'enumerate()' nếu bạn nghĩ rằng subscript và '.count' trông xấu xí. – ozgur