So I have this function where I've need to take out the evens and odds and put them into separate arrays but I need the evens array to print first rather than the odds.
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; }
If you want to split the number by their even and odd values, instead of using the index (i
), determine the sub array to push into using the value - 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));
If you want to split them by even and odd indexes use (i + 1) % 2
to determine the sub array to push into:
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));
Just for fun, a forEach
version of the accepted answer.
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);