Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

281
Views
push() method not working properly in JavaScript

I'm trying to write a quite simple program that divides an array in another array of defined size smaller arrays, however the push() method is not working. Could someone please help me with it?

function chunk(array, size) {
  var newArray = [];
  var tempArray = [];

  for (let i = 0; i < array.length / size; i++) {
    for (let j = size * i, k = 0; j < size * i + size; j++, k++)
      tempArray[k] = array[j];

    newArray.push(tempArray);
  }

  return newArray;
}

var data = [1, 2, 3, 4, 5, 6, 7, 8];

console.log(chunk(data, 2));

The ideal output should be [[1, 2],[3, 4], [5, 6], [7, 8]]. However im getting [[7,8],[7,8],[7,8],[7,8]].

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

You're almost there. Just move the tempArray definition inside your first for-loop. Otherwise you would be pushing the same array each time.

Working Example:

function chunk(array, size) {
  const newArray = [];

  for (let i = 0; i < array.length / size; i++) {
    const tempArray = [];
    for (let j = size * i, k = 0; j < size * i + size; j++, k++)
      tempArray[k] = array[j];

    newArray.push(tempArray);
  }

  return newArray;
};

const data = [1, 2, 3, 4, 5, 6, 7, 8];

console.log(chunk(data, 2)); // [[1, 2],[3, 4], [5, 6], [7, 8]]

about 4 years ago · Juan Pablo Isaza Report

0

@Behemoth's answer is the correct one for the question. But if you want, you can take a slightly different approach like this to reach the solution as well.

function chunk(array, size){
    const newArray = [];
    let i,j;
    
    for (i = 0,j = array.length; i < j; i += size) {
      newArray.push(array.slice(i, i + size));
    }
    return newArray;
};

var data = [1, 2, 3, 4, 5, 6, 7 ,8];

console.log(chunk(data, 2));

about 4 years ago · Juan Pablo Isaza Report

0

Slightly different solution than @Behemoth and @Rukshan

function chunk(array, size) {
  var newArray = [];
  var tempArray = [];

  for (let i = 0; i < array.length / size; i++) {

    for (let j = i; j < i + 1; j++) {
      for (let k = 0; k < size; k++) {
        if (array[size * j + k]) {
          tempArray.push(array[size * j + k]);
        }
      }
      newArray.push(tempArray);
      tempArray = [];
    }
  }
  return newArray;
};

var data = [1, 2, 3, 4, 5, 6, 7, 8];

console.log(chunk(data, 2));

The solution would be [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ], [ 7, 8 ], [ 9 ] ] instead of [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ], [ 7, 8 ]]

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!