从for循环到每个循环获取数组中奇数位置的每个元素

时间:2018-04-26 13:17:35

标签: javascript arrays for-loop foreach

我试图将奇数位置的数组中的每个元素推送到数组,并将偶数位置的元素推送到数组。例如:

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 :(得分:1)

索引作为第二个参数传递给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);
  }
});