这里是 Kotlin 新手 --
有没有一种“更简洁”的方法来做到这一点? (我的 int 值保证在整个集合中是唯一的)
fun main() {
val sect = arrayOf(arrayOf(1, 2, 3), arrayOf(4, 5), arrayOf(6, 7, 8, 9))
val (i1, i2) = deepIndexOf(sect, 6)
println("$i1 - $i2")
}
fun deepIndexOf(a: Array<Array<Int>>, x: Int): Pair<Int, Int> {
for ((i1, sub) in a.withIndex()) {
val i2 = sub.indexOf(x)
if (i2 > -1) return i1 to i2
}
return -1 to -1
}
最佳答案
fun deepIndexOf(a: Array<Array<Int>>, x: Int): Pair<Int, Int> {
return a
.mapIndexed { index, ints -> index to ints.indexOf(x) }
.firstOrNull { (_, found) -> found != -1 }
?: (-1 to -1)
}
编辑:根据下面@Alex.T的评论,这是一个不处理整个输入列表的解决方案:
fun deepIndexOf(a: Array<Array<Int>>, x: Int): Pair<Int, Int> {
return a
.withIndex()
.dropWhile { (_, ints) -> ints.indexOf(x) == -1 }
.map { (index, ints) -> index to ints.indexOf(x) }
.getOrElse(0) { -1 to -1 }
}
关于kotlin - 嵌套数组indexOf(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71551166/