Метод map() в JavaScript: как применять в коде, примеры для JS / React.js / Vue.js
JavaScript

Метод map() в JavaScript: как применять в коде, примеры для JS / React.js / Vue.js

Razilator

Метод map() в JavaScript применяется для создания нового массива на основе исходного массива, применяя к каждому элементу функцию обратного вызова и возвращая результаты в новый массив.

Он принимает функцию обратного вызова, которая вызывается для каждого элемента массива. Функция обратного вызова принимает три аргумента: значение текущего элемента, индекс текущего элемента и массив, для которого вызывается метод map().

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

Синтаксис метода map()

Синтаксис метода map() выглядит следующим образом:

Синтаксис
array.map(function(currentValue, index, arr), thisValue)
  • currentValue - обязательный параметр, представляет значение текущего элемента массива.
  • index - необязательный параметр, представляет индекс текущего элемента массива.
  • arr - необязательный параметр, представляет массив, для которого вызывается метод map().
  • thisValue - необязательный параметр, представляет значение this, которое будет использоваться при вызове функции обратного вызова.

Пример использования метода map()

Пример обычного использования:

index.js
const arr = [1, 2, 3, 4, 5];

const newArr = arr.map(function(element) {
  return element * 2;
});

console.log(newArr); // [2, 4, 6, 8, 10]

В этом примере мы создаем новый массив newArr, применяя функцию обратного вызова, которая умножает каждый элемент исходного массива на 2. Результатом является новый массив с удвоенными значениями элементов.

Пример использования в React.js:

Давайте рассмотрим практический пример использования метода map() в React для вывода списка статей. Для начала создадим компонент ArticleList, который будет принимать массив статей в качестве пропса и выводить каждую статью в отдельном компоненте Article.

components/Blog/ArticleList.js
import React from 'react';
import Article from './Article';

function ArticleList(props) {
  const articles = props.articles.map((article) => (
    <Article
      key={article.id}
      title={article.title}
      author={article.author}
      content={article.content}
    />
  ));

  return <div>{articles}</div>;
}

export default ArticleList;

Как видно, мы используем метод map() для перебора массива articles и создания нового массива из компонентов Article, которые мы выводим в компоненте ArticleList.

Теперь создадим компонент Article, который будет выводить каждую статью в отдельном блоке.

components/Blog/Article.js
import React from 'react';

function Article(props) {
  return (
    <div>
      <h2>{props.title}</h2>
      <p>By {props.author}</p>
      <p>{props.content}</p>
    </div>
  );
}

export default Article;

Всё, теперь мы можем использовать компонент ArticleList в других частях приложения и передавать ему массив статей для вывода, в котором будет перебор элементов с помощью метода map().

Пример метода map() во Vue.js

Пример метода map() для Vue.js может выглядеть следующим образом:

index.js
<template>
  <div>
    <h2>Список фруктов:</h2>
    <ul>
      <li v-for="(fruit, index) in fruits" :key="index">
        {{ index + 1 }}. {{ fruit }}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      fruits: ['Яблоко', 'Груша', 'Апельсин', 'Банан', 'Ананас']
    };
  }
};
</script>

В данном примере мы создали компонент Vue.js, который выводит список фруктов. Массив фруктов хранится в свойстве fruits, а для вывода списка используется директива v-for, которая перебирает массив fruits с помощью метода map().

Каждый элемент массива fruits передается в переменную fruit, а индекс текущего элемента - в переменную index. Внутри блока li мы выводим порядковый номер фрукта (индекс + 1) и его название.

Таким образом, при использовании метода map() с директивой v-for, мы можем перебирать массивы в Vue.js и выводить их содержимое в виде списка или таблицы.

;