user18052364
user18052364

Reputation:

how can I move zeros to the end of an array javascript

I want to move the zeros of the array to the end of the array, like

zeroesToEnd([1, 2, 0, 0, 4, 0, 5])

[1, 2, 4, 5, 0, 0, 0]

I've tried this

console.log(zeroesToEnd([1, 2, 0, 0, 4, 0, 5]))

function zeroesToEnd(a) {
    let counter=0;
    let concatarr=[];
    for(let i=0; i <= a.length;i++){
        if(a[i]===0){
            concatarr.push(0);
            counter++
        }
    }
    return a.concat(concatarr)   
}

Upvotes: 1

Views: 299

Answers (1)

async await
async await

Reputation: 2395

I think using the filter method satisfies your question, however in the spirit of keeping the answer in line with your attempt, I wanted to include an answer using for loops.

In my answer, I initialize a variable to keep track of the number of zeros that are in the first array. Then, I initialize a new array that is going to hold the desired results.

I have one for loop stepping through the items in the array passed into the function, and if it is zero I increase the count, otherwise I add the item to the newArray. Afterwards, I have another for loop which runs the number of times we counted for zeros, and adds a zero to the end of the newArray.

Please note this does not mutate the original array, but produces a new array.

function zeroesToEnd(a) {
  let countOfZeros = 0;
  const newArray = [];
  for (const item of a) {
    if (item === 0) countOfZeros++;
    else newArray.push(item);
  }
  for (let i = 0; i < countOfZeros; i++) {
    newArray.push(0);
  }
  return newArray;
}

console.log(zeroesToEnd([1, 2, 0, 0, 4, 0, 5]));

Upvotes: 1

Related Questions