如何使偶数数组先于奇数数组打印输出?

3

我有一个函数,需要将偶数和奇数分别放入不同的数组中,但我需要先打印偶数数组而不是奇数数组。

var numbersArray = [1,2,34,54,55,34,32,11,19,17,54,66,13];

function divider(numbersArray) {
  var evensOdds = [[], []];
    for (var i = 0; i < numbersArray.length; i++) {
      evensOdds[i & 1].push(numbersArray[i]);
  }
  return evensOdds;
}

1
返回 evensOdds.reverse(); - Nir Alfasi
3
意图是有意的 evensOdds[i&1]?这似乎是根据索引是偶数还是奇数将它们分开,但您的问题听起来像是要根据而不是索引来将它们分开。 - CRice
使用 i % 2 更清晰,而且可以适用于其他除数,而不是使用 i & 2 - mdatsev
@CRice 不,那不是故意的。谢谢你指出来! - batman091716
1
@alfasin 那个有效了! - batman091716
2个回答

6
如果您想按偶数和奇数值拆分数字,而不是使用索引(i),则可以通过值- numbersArray [i]%2 来确定要推入哪个子数组。

var numbersArray = [1,2,34,54,55,34,32,11,19,17,54,66,13];

function divider(numbersArray) {
  var evensOdds = [[], []];
  for (var i = 0; i < numbersArray.length; i++) {
    evensOdds[numbersArray[i] % 2].push(numbersArray[i]);
  }
  return evensOdds;
}

console.log(divider(numbersArray));

如果你想按照偶数和奇数索引拆分它们,可以使用(i + 1) % 2 来确定要推入的子数组:

var numbersArray = [1,2,34,54,55,34,32,11,19,17,54,66,13];

function divider(numbersArray) {
  var evensOdds = [[], []];
  for (var i = 0; i < numbersArray.length; i++) {
    evensOdds[(i + 1) % 2].push(numbersArray[i]);
  }
  return evensOdds;
}

console.log(divider(numbersArray));


1

仅供娱乐,这是已接受答案的forEach版本。

    var numbersArray = [1,2,34,54,55,34,32,11,19,17,54,66,13];
    var even_odd = [ [], [] ];

    numbersArray.forEach( e => even_odd[e%2].push(e) );

    console.log(even_odd);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接