flatMapIndexed

Returns a single list of all elements yielded from results of transform function being invoked on each element and its index in the original array.

@JvmName(name = "flatMapIndexedIterable")inline fun <T, R> Array<out T>.flatMapIndexed(transform: (index: Int, T) -> Iterable<R>): List<R>(source)
val numbers = arrayOf(1, 2, 3)

val result = numbers.flatMapIndexed { index, value ->
    List(index + 1) { "$value-$index" }   // create a list of strings
}

println(result)   // prints: [1-0, 2-1, 2-1, 3-2, 3-2, 3-2]

Source