Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取数组中从for循环到for循环的奇数位置上的每个元素_Javascript_Arrays_For Loop_Foreach - Fatal编程技术网

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

Javascript 获取数组中从for循环到for循环的奇数位置上的每个元素,javascript,arrays,for-loop,foreach,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]);

我试图将数组中奇数位置的每个元素都推到一个数组中,对于偶数位置的元素也是如此。例如:

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]);
  }
}
但这不起作用,而不是输出:

even = [ 1, 2, 8, 6 ];
odd = [ 1, 2, 3, 4 ];
它输出这个,这是错误的:

even = [ 2, 2, 8, 4, 6 ];
odd = [ 1, 1, 3 ];
因此,它不输出数组中奇数或偶数位置的元素,而是输出奇数或偶数的元素


提前谢谢

索引作为第二个参数传递给回调。您需要替换此:

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);
  }
});

索引作为第二个参数传递给回调。您需要替换此:

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);
  }
});

if((i+2)%2==1){偶数.push(arr1[i]);
”这里根本没有指向
+2
的意义。
.forEach()
将索引作为回调的第二个参数,因此使用它代替
x
arr1.forEach((x,i)=>{if(i%2==0){/code>首先您必须确定“偶数”和“奇数”的含义。”在您的第一个代码块中,您似乎基于对位置(第一位置=索引0=奇数)的非技术感知而使用了“偶数”和“奇数”,而不是索引的文字均匀性/奇数(第一位置=索引0=偶数)。但是您的
forEach
将其反转。“
如果((i+2)%2==1){偶数推送(arr1[i]);
”这里的
+2
没有任何意义。
.forEach()
为回调提供了一个索引作为第二个参数,因此使用它而不是
x
arr1.forEach((x,i)=>{如果(i%2==0){
首先,您必须确定“偶数”和“奇数”的含义。在您的第一个代码块中,您似乎使用了“偶数”“奇数”基于对位置的非技术感知(第一位置=指数0=奇数),而不是指数的文字均匀度/奇数(第一位置=指数0=偶数).但是你的
forEach
颠倒了这一点。我会接受答案,但它不会让我马上做,我必须等9分钟。我会接受答案,但它不会让我马上做,我必须等9分钟。