Search code examples
javascriptarraysfor-loopnested-loops

how to create a new array form nested arrays using nested loops JS


I have a nested arrays, I need to create two new arrays one for the even numbers and the other is for odd numbers using nested for loop. I used push method but the result was that every number was in a separate array while I need all even numbers to be set in a single array and the same for the odd numbers.

Here is my code:

var numbers = [
  [243, 12, 23, 12, 45, 45, 78, 66, 223, 3],
  [34, 2, 1, 553, 23, 4, 66, 23, 4, 55],
  [67, 56, 45, 553, 44, 55, 5, 428, 452, 3],
  [12, 31, 55, 445, 79, 44, 674, 224, 4, 21],
  [4, 2, 3, 52, 13, 51, 44, 1, 67, 5],
  [5, 65, 4, 5, 5, 6, 5, 43, 23, 4424],
  [74, 532, 6, 7, 35, 17, 89, 43, 43, 66],
  [53, 6, 89, 10, 23, 52, 111, 44, 109, 80],
  [67, 6, 53, 537, 2, 168, 16, 2, 1, 8],
  [76, 7, 9, 6, 3, 73, 77, 100, 56, 100]
];

for (var x = 0; x < numbers.length; x++) {
    for (var y = 0; y < numbers[x].length; y++) {
    if (numbers[x][y] % 2 === 0) {
        var even = [];
        even.push(numbers[x][y]);
    } else {
        var odd = [];
        odd.push(numbers[x][y]);
    }
    console.log(odd);
}

Solution

  • You have to merge all the nested array in a new array and then you can find all the odd and even numbers separately as below

    var numbers = [
      [243, 12, 23, 12, 45, 45, 78, 66, 223, 3],
      [34, 2, 1, 553, 23, 4, 66, 23, 4, 55],
      [67, 56, 45, 553, 44, 55, 5, 428, 452, 3],
      [12, 31, 55, 445, 79, 44, 674, 224, 4, 21],
      [4, 2, 3, 52, 13, 51, 44, 1, 67, 5],
      [5, 65, 4, 5, 5, 6, 5, 43, 23, 4424],
      [74, 532, 6, 7, 35, 17, 89, 43, 43, 66],
      [53, 6, 89, 10, 23, 52, 111, 44, 109, 80],
      [67, 6, 53, 537, 2, 168, 16, 2, 1, 8],
      [76, 7, 9, 6, 3, 73, 77, 100, 56, 100]
    ];
    var merged = [].concat.apply([], numbers);
    var evenValues = [];
    var oddValues = [];
    for (var i = 0; i < merged.length; i++) {
      if ((merged[i] % 2) != 1) {
        evenValues.push(merged[i]);
      } else {
        oddValues.push(merged[i]);
      }
    }
    console.log(evenValues);
    console.log(oddValues);