НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
407 of 1310 menu

Функция mapIndexed

Функция mapIndexed применяет переданную функцию-преобразователь к каждому элементу коллекции, предоставляя доступ к индексу элемента. Возвращает новую коллекцию с результатами преобразования. Работает с массивами Array, списками List, множествами Set и другими типами коллекций.

Синтаксис

inline fun <T, R> Array<out T>.mapIndexed( transform: (index: Int, T) -> R ): List<R>
inline fun <T, R> Iterable<T>.mapIndexed( transform: (index: Int, T) -> R ): List<R>
inline fun <K, V, R> Map<out K, V>.mapIndexed( transform: (index: Int, Entry<K, V>) -> R ): List<R>

Пример

Преобразуем массив чисел, добавив к каждому элементу его индекс:

val numbers = arrayOf(10, 20, 30, 40, 50) val res = numbers.mapIndexed { index, value -> value + index } println(res)

Результат выполнения кода:

List<Int> [10, 21, 32, 43, 54]

Пример

Создадим список строк с информацией о позиции каждого элемента:

val chars = listOf('a', 'b', 'c', 'd', 'e') val res = chars.mapIndexed { index, char -> "Position $index: $char" } println(res)

Результат выполнения кода:

List<String> ['Position 0: a', 'Position 1: b', 'Position 2: c', 'Position 3: d', 'Position 4: e']

Пример

Преобразуем множество, умножая каждый элемент на его индекс:

val nums = setOf(5, 10, 15, 20) val res = nums.mapIndexed { index, num -> num * index } println(res)

Результат выполнения кода:

List<Int> [0, 10, 30, 60]

Пример

Работа с картой Map - преобразуем записи с учетом индекса:

val map = mapOf("a" to 1, "b" to 2, "c" to 3) val res = map.mapIndexed { index, entry -> "${index + 1}. ${entry.key}=${entry.value}" } println(res)

Результат выполнения кода:

List<String> ['1. a=1', '2. b=2', '3. c=3']

Пример

Использование условия с индексом - преобразуем только элементы с четными индексами:

val numbers = listOf(100, 200, 300, 400, 500) val res = numbers.mapIndexed { index, value -> if (index % 2 == 0) value * 2 else value } println(res)

Результат выполнения кода:

List<Int> [200, 200, 600, 400, 1000]

Смотрите также

  • функцию map,
    которая преобразует элементы без учета индекса
  • функцию forEachIndexed,
    которая выполняет действие для каждого элемента с индексом
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить