Получить каждый второй элемент массива с помощью методов массива

в учебных целях я хочу получить каждый второй элемент массива. Мне удалось выполнить цикл for:

  const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

  function filterEverySecond(arr) {
    let everySecondEl = [];
    for (let i = 0; i < arr.length; i += 2) {
      everySecondEl.push(arr[i]);
    }
    return everySecondEl;
  }

  console.info({
    numbers,
    result: filterEverySecond(numbers)
  });

Теперь я хочу добиться того же без цикла for, но с помощью методов массива (forEach, filter, map или reduce). Может ли кто-нибудь порекомендовать, какой метод будет лучше здесь?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
25
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

вы можете сделать это легко с filter

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

const filtered = numbers.filter((_, i) => i % 2 === 0)

console.info(filtered)

вы просто отфильтровываете элементы с нечетным индексом

Теперь это выглядит так очевидно... Большое спасибо!

kkkjjj 08.05.2022 17:23

Вы можете использовать filter и проверить, делится ли индекс текущего элемента массива на 2:

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

console.info({
  numbers,
  result: numbers.filter((_, index) => index % 2 === 0)
});

Вы можете использовать для каждого цикла так, чтобы получить тот же желаемый результат:

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const result = [];

numbers.forEach(number => {
    if (number % 2 != 0) {
        result.push(number);
    }
});

console.info(numbers);
console.info(result);

Оператор модуля возвращает остаток двух чисел при делении. Например: 1 % 2 вернет 1 в качестве остатка. Итак, в операторе if мы проверяем, не делится ли число на 2.

Привет! Ваш ответ кажется неправильным, автору вопроса нужен результат: [ 1, 3, 5, 7, 9 ] а не ваш, исправьте код, прежде чем вы получите больше отрицательных голосов.

NNL993 08.05.2022 17:20

Спасибо, что указали на это, простое решение!

ItzHex 08.05.2022 17:22

Вы можете использовать фильтр для index.

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
console.info({
    numbers,
    result: numbers.filter((n,i)=>i%2==0)
});

Другие вопросы по теме