получить каждый элемент в нечетной позиции в массиве из цикла for для каждого цикла - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь поместить каждый элемент в массиве, который находится в нечетной позиции, в массив и то же самое с элементами в четных позициях. Например:

var arr = [a, b, c, d, e, f, g];
//Would give me this
var odd = [a, c, e, g];
var even = [b, d, f];

У меня есть код, который работает с циклом for, и он выглядит так:

for (var i=0;i<arr1.length;i++){
    if ((i+2)%2==1) {
    even.push(arr1[i]);
  } else {
    odd.push(arr1[i]);
  }
}

но вместо использования цикла for я хочу использовать цикл forEach. Вот что я сделал:

var arr1 = [1,1,2,2,3,8,4,6];
arr1.forEach(x => {
  if((x) % 2 == 0) {
    even.push(x);
  } else {
    odd.push(x);
  }
});

но это не работает, вместо вывода этого:

even = [ 1, 2, 8, 6 ];
odd = [ 1, 2, 3, 4 ];

Это выводит это, что неправильно:

even = [ 2, 2, 8, 4, 6 ];
odd = [ 1, 1, 3 ];

Таким образом, вместо вывода элемента, который находится в нечетном или четном положении в массиве, он выводит элементы, которые являются нечетными или четными.

Заранее спасибо!

1 Ответ

0 голосов
/ 26 апреля 2018

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

arr1.forEach(x => {
  if((x) % 2 == 0) {
    even.push(x);
  } else {
    odd.push(x);
  }
});

этим:

arr1.forEach((x, i) => {
  if(i % 2 == 0) {
    even.push(x);
  } else {
    odd.push(x);
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...