Kotlin使用迭代索引过滤lambda数组

我想过滤一个数组到每个第n个项目的数组。 例如:

fun getNth(array: Array<Any>, n: Int): Array<Any> { val newList = ArrayList<Any>() for (i in 0..array.size) { if (i % n == 0) { newList.add(array[i]) } } return newList.toArray() } 

有没有一种惯用的方法来做到这一点,例如使用Kotlin的.filter()和没有A)供应一个新的ArrayList和B)手动迭代for / in循环?

filterIndexed函数完全适合这种情况:

 array.filterIndexed { index, value -> index % n == 0 } 

使用Array.withIndex():

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/with-index.html

 array.withIndex().filter { (i, value) -> i % n == 0 }.map { (i, value) -> value }