Как найти каждый второй элемент массива

Мы хотим получить из массива каждый второй элемент. Как это сделать?

У нас есть массив:

let massiv = [1,2,3,4,5,6,7,8,9,10];

Мы взяли массив из чисел для простоты восприятия.

Использование метода filter()

Из документации мы знаем, что метод filter() может принимать ДВА параметра. Первый обязательный — это функция обратного вызова, выполнение которой должно приводить к получению логического значения true или false. Её нам будет достаточно.

Эта функция обратного вызова может принимать ТРИ параметра:

  1. значение элемента
  2. индекс элемента
  3. просматриваемый (обходимый) объект

Для решения задачи нам будет достаточно передать первые два параметра. Если быть точнее, то нам нужен только второй параметр, но к сожалению, мы не можем передать только его одного. Индексы любого «нормального» массива начинаются с 0 (нуля) и увеличиваются на 1 для каждого элемента массива.

Это значит, что нам нужны индексы массива под номерами 1, 3, 5, 7 … и так далее.

Решить задачу нам поможет оператор остатка от деления — %, который будет возвращать нам какое-то целое число, которое в последствии будет приведено к логическому типу. Выглядеть это будет так:

let massiv = [1,2,3,4,5,6,7,8,9,10];
massiv.filter((item, index) => index % 2);
[2, 4, 6, 8, 10]

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

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

Как это работает?

Давайте по шагам посмотрим на преобразования.

Сначала в коллбэк придёт индекс под номером НОЛЬ.

0 % 2

Данное выражение возвращает нам число 0. Наш коллбэк попытается привести НОЛЬ к логическому типу и мы получим false. Метод filter() посмотрит на false и не добавит элемент массива в новый массив. Элемент со значением 1 будет выброшен. Далее ситуация будет чередоваться:

Чередование 0 и 1 в остатке от деления для целочисленных индексов массива JavaScript

Чередование 0 и 1 в остатке от деления для целочисленных индексов массива JavaScript

Не трудно догадаться, что подобное чередование остатков от деления всегда будет преобразовываться в чередование true и false. Элемент под индексом 1 будет ВТОРЫМ элементом массива. Индекс 1 вернёт нам остаток от деления в виде числа 1, которое будет преобразовано в true и в результате мы получим второй элемент массива в новый массив. Ситуация будет повторяться до самого конца массива и в итоге мы получим новый массив, который будет состоять только из вторых элементов оригинального массива.

Альтернативное универсальное решение

Если нам нужно будет написать функцию, в которую мы будем передавать нужный нам шаг получения элементов массива, то тогда выражение примет немного иной вид.

Вместе с остатком от деления мы будем использовать отрицание и группировку. Выглядеть это будет так:

let massiv = [1,2,3,4,5,6,7,8,9,10];
massiv.filter((item, index)=>!((index+1)%2));

Использовали отрицание и группировку для получения каждого второго элемента массива JavaScript

Использовали отрицание и группировку для получения каждого второго элемента массива JavaScript

Функция получения каждых N-ых элементов массива

function everyN (array, n){

   return array.filter((item, index)=>!((index+1)%n));

}

Пример работы функции:

Универсальная функция получения каждого N-ого элемента массива JavaScript

Универсальная функция получения каждого N-ого элемента массива JavaScript

Информационные ссылки

JavaScript | Как получить каждый третий элемент массива?

Стандарт ECMAScript — Раздел «23.1.3.8 Array.prototype.filter ( callbackfn [ , thisArg ] )» — https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.filter

Стандарт ECMAScript — Раздел «13.7 Multiplicative Operators» — https://tc39.es/ecma262/multipage/ecmascript-language-expressions.html#sec-multiplicative-operators

Узнай цену своей работы

Формулировка задачи:

Задан массив размером N. Вывести на печать каждый второй элемент массива.

Код к задаче: «Вывести на печать каждый второй элемент массива»

textual

Листинг программы

for (int i = 1; i < mass.Length; i+=2)

Полезно ли:

15   голосов , оценка 4.467 из 5

Похожие ответы

  1. Вывести элемент массива, если он равен тмоу же элементу во втором массиве
  2. Найти и вывести на экран произведение всех элементов в каждой строке двумерного массива
  3. В каждой строке двумерного массива поменять первый нулевой элемент и последний отрицательный
  4. Массив: Вывести в начале элементы массива с чётными номерами, а потом с нечетными…
  5. Для каждой строки ступенчатого массива подсчитать количество положительных элементов
  6. Заполнить массив и прибавить к каждому элементу массива сумму индексов этого элемента
  7. Вывести сумму индексов четных элементов массива
  8. Поменять местами наиб и наим элемент в каждой строке двумерного массива
  9. Массив: произведение элементов массива, расположенных между первым и вторым нулевыми элементами
  10. Найти максимальный элемент массива и отклонение от максимального для каждого из элементов
  11. Из каждого элемента массива номер которого кратен К вычесть М. Ко всем остальным элементам прибавить М

0 / 0 / 0

Регистрация: 17.01.2013

Сообщений: 41

1

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

31.01.2013, 23:11. Показов 8790. Ответов 2


Студворк — интернет-сервис помощи студентам

Задан массив размером N. Вывести на печать каждый второй элемент массива.



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

31.01.2013, 23:11

Ответы с готовыми решениями:

Сформировать массив B, записав в него каждый второй элемент массива А
Сформировать массив В=(b1,b2,…,bk), записав в него каждый второй элемент массива А = (a1,a2,…,an)….

Как вывести каждый элемент массива
Всем привет!
Вопрос, возможно очень тупой, но

Есть массив строк.
Как каждому элементу массива…

Вывести второй по величине элемент целочисленного массива
Помогите найти ошибку в коде!
Необходимо вывести второй по величине элемент целочисленного…

Создать очередь и удалить из нее каждый второй элемент
Здравствуйте!
Помогите, пожалуйста, с решением такой задачи, как создание очереди и удаления из…

2

GOLD

124 / 37 / 6

Регистрация: 14.01.2012

Сообщений: 264

31.01.2013, 23:51

2

Лучший ответ Сообщение было отмечено nfnmzyf1406 как решение

Решение

Не флуди одинаковыми темами, хоть они и с разными заданиями.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
int n = 0;
 
            Console.WriteLine("Введите n:");
            n = Int32.Parse(Console.ReadLine());
            int[] mass = new int[n];
            for (int i = 0; i < n; i++)
            {
                Console.WriteLine("Введите значение массива {0}:", i);
                mass[i] = Int32.Parse(Console.ReadLine());
            }
            for (int i = 0; i < n; i++, i++)
                Console.WriteLine("  {0}", mass[i]);
            Console.ReadLine();



0



andrew_w2k

340 / 340 / 90

Регистрация: 04.03.2010

Сообщений: 648

01.02.2013, 00:02

3

C#
1
for (int i = 1; i < mass.Length; i+=2)



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

01.02.2013, 00:02

Помогаю со студенческими работами здесь

Сжать массив, выбросив из него каждый второй элемент
Пожалуйста, помогите написать программу на C#

Дан целочисленный массив из n элементов. Сжать…

Создать массив: первый элемент равен A, второй равен B, а каждый последующий элемент равен сумме всех предыдущих
Даны целые числа N (&gt; 2), A и B. Сформировать и вывести цело-
численный массив размера N, первый…

Написать и протестировать метод, который заменяет каждый второй элемент в строке на заданный символ
Написать и протестировать метод, который в строке, передаваемой ей в качестве параметра, заменяет…

Заменить последний положительный элемент на второй элемент массива
Помогите с задачей на одномерные массивы:
Заменить последний положительный элемент на второй…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

3

I’m trying to improve my JavaScript skills. Using a for loop I want to select every second element (for example I want to make them bold or italic). I know I can do this using CSS3 and the nth-child selector, but as I said, I’m trying to improve my JS skills and I want to do this using a for loop and no foreach loop or another JS loop type. I’m new in JS.

edit:I want to add all element but i just want to pick up every second element to make them bold or italic

var myList = document.getElementById('myList');
var addList = ["Python", "C", "C++", "Ruby", "PHP", "Javascript", "Go", "ASP", "R"];

for (var i = 0; i < addList.length; i++) {
  var newLi = document.createElement("li");

  newLi.innerHTML = addList[i];
  myList.appendChild(newLi);
}
<ul id="myList"></ul>

NullPointer's user avatar

NullPointer

6,9644 gold badges26 silver badges40 bronze badges

asked Aug 13, 2018 at 10:32

ani_css's user avatar

Use modulus(%) operator to get every 2nd element in loop and add fontStyle on it:

var myList = document.getElementById('myList');
var addList = ["Python", "C", "C++", "Ruby", "PHP", "Javascript", "Go", "ASP", "R"];

for (var i = 0; i < addList.length; i++) {
  var newLi = document.createElement("li");
  newLi.innerHTML = addList[i];
  if(i%2==0){
  newLi.style.fontStyle = "italic"
  newLi.innerHTML = "<strong>"+addList[i]+"</strong>";
  }


  
  myList.appendChild(newLi);
}
<ul id="myList"></ul>

answered Aug 13, 2018 at 10:50

NullPointer's user avatar

NullPointerNullPointer

6,9644 gold badges26 silver badges40 bronze badges

2

In your for loop, instead of increasing i by 1, increase i by two on every iteration with i+=2.

Updated code:

var myList = document.getElementById('myList');
var addList = ["Python", "C", "C++", "Ruby", "PHP", "Javascript", "Go", "ASP", "R"];

for (var i = 0; i < addList.length; i+=2) {
  var newLi = document.createElement("li");

  newLi.innerHTML = addList[i];
  myList.appendChild(newLi);
}
<ul id="myList"></ul>

answered Aug 13, 2018 at 10:35

JSON Derulo's user avatar

JSON DeruloJSON Derulo

8,5895 gold badges32 silver badges50 bronze badges

2

In your for loop, instead of i++, use i += 2.

answered Aug 13, 2018 at 10:34

hsz's user avatar

hszhsz

147k61 gold badges258 silver badges313 bronze badges

3

You could add something like this to the loop body:

if (i % 2 == 1) {
    // whatever you need to do to make it bold or italic
}

This will be called for every odd value of i.

answered Aug 13, 2018 at 10:51

Frank Puffer's user avatar

Frank PufferFrank Puffer

8,0952 gold badges20 silver badges43 bronze badges

Simply use i+=2 in place of i++ in your loop

answered Aug 13, 2018 at 10:37

p u's user avatar

p up u

1,3831 gold badge17 silver badges29 bronze badges

3

To add all elements and pick up every 2nd element, use the modulo operator % in if statement: i % 2 == 0 and change the fontStyle.

Updated code:

var myList = document.getElementById('myList');
var addList = ["Python", "C", "C++", "Ruby", "PHP", "Javascript", "Go", "ASP", "R"];

for (var i = 0; i < addList.length; i+=2) {
  var newLi = document.createElement("li");
  
  if (i % 2 == 0) {
    // make bold
    newLi.style.fontStyle = "bold"
    // make italic
    newLi.style.fontStyle = "italic"
  }

  newLi.innerHTML = addList[i];
  myList.appendChild(newLi);
}
<ul id="myList"></ul>

answered Aug 13, 2018 at 10:39

Audwin Oyong's user avatar

Audwin OyongAudwin Oyong

2,2073 gold badges14 silver badges32 bronze badges

1

Есть массив lst, нужно каждый n-ный элемент массива отправить в другой массив. Пробовал делать так:

for i in range(0, len(lst[0])):
    if lst[0][i] % 10 = 0 then new_list.append(lst[0][i])

Использую lst[0][i] потому что это массив с одной строкой, в этой строке все элементы.

Но выдает ошибку SyntaxError: invalid syntax

задан 9 апр 2017 в 11:01

Blame Flame's user avatar

2

Шаг цикла берётся таким образом:

for i in range(0, 11, 2):, где 2 - шаг цикла
    print(i)

Но если вы просто хотите создать новый массив, то я предлагаю вам следующую форму записи, которая решает вашу задачу, применимую и к строкам, и к массивам:

s = 'somestring'
s = s[::2] # эквивалентно [0::2]

lst = [1, 2, 3, 4, 5, 6]
lst = lst[::2] #[стартовый индекс:конечный индекс:шаг]
               # если ничего не указано, то [0:-1:1]

ответ дан 9 апр 2017 в 11:06

Берём срез всех элементов списка a с шагом n.

a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
n = int(input())
b = a[::n]
print(b)

ответ дан 9 апр 2017 в 11:04

Кирилл Малышев's user avatar

Кирилл МалышевКирилл Малышев

10.8k1 золотой знак18 серебряных знаков34 бронзовых знака

Понравилась статья? Поделить с друзьями:
  • Как найти область определения дискретная математика
  • Как найти клиента для ремонта квартиры
  • Как найти количество вершин в многограннике
  • Как в телефоне найти ussd
  • Как найти cos2a зная sin2a