我试图将奇数位置的数组中的每个元素推送到数组,并将偶数位置的元素推送到数组。例如:
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 ];
因此,不是输出数组中奇数或偶数位置的元素,而是输出奇数或偶数元素。
提前致谢!
答案 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);
}
});