Lassen Sie uns sagen, dass ich dieses Array haben:Wie findet man den Index eines Artikels in einem multidimensionalen Array schnell?
let a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Jetzt möchte ich etwas wie folgt aus:
public func indicesOf(x: Int, array: [[Int]]) -> (Int, Int) {
...
}
so, dass ich es so nennen kann:
indicesOf(7, array: a) // returns (2, 0)
Natürlich, ich kann verwenden:
for i in 0..<array.count {
for j in 0..<array[i].count {
if array[i][j] == x {
return (i, j)
}
}
}
Aber das ist nicht mal knapp!
Ich möchte einen Weg, dies zu tun, die swifty ist. Ich denke, vielleicht kann ich reduce
oder map
verwenden?
Es
Ebenso ist eine Erweiterung für eine verschachtelte
Array
vonEquatable
Elemente machen Für diesen Fall ist es nicht sinnvoll, 'map/filter/reduce' zu verwenden, da Sie eine Liste von Objekten nicht in eine Liste umwandeln müssen von einer anderen Sache. Sie müssen nur eine Art von Gleichheitsüberprüfung zwischen den Werten durchführen, indem Sie 'enumerate()' verwenden, wenn Sie denken, dass tiefgestellt und '.count' hässlich aussieht. – ozgur