search

Home  >  Q&A  >  body text

Create a function that alternates between .pop() and .shift()

I'm having beginner's difficulty with my JS exercises. I need to write a function popAndShift(). This function first prints the contents of arrays array1 and array2. Then, alternately remove elements of array2 using the .pop() and .shift() methods (starting with .pop()) and add the removed values ​​to the end of array1. Finally, print the contents of array1. **Automated tests assign values ​​to arrays. ** My code passes the first test but fails the second one. I'm wondering if I need to use a for loop to achieve the desired result. thanks for your help.

Code and test screenshots

function popAndShift(){

console.log("First array: " + array1);
console.log("Second array: " + array2);

RemoveE =array2.pop();
RemoveB=array2.shift();
RemoveC =array1.push(RemoveE,RemoveB,array2);
    
console.log("Resulting array:" + array1);
}

P粉403804844P粉403804844483 days ago499

reply all(1)I'll reply

  • P粉920835423

    P粉9208354232023-09-12 19:54:24

    I looked at the image you provided and this new function should work and produce the expected output. We are storing a variable called usePop and then alternately using it each time we run the loop until array2 is empty.

    const array1 = ["A"];
    const array2 = ["B", "C", "D", "E", "F", "G", "H", "I"];
    
    function popAndShift(){
      console.log("First array: " + array1);
      console.log("Second array: " + array2);
    
      let usePop = true;
      while (array2.length > 0) {
        array1.push(usePop ? array2.pop() : array2.shift());
        usePop = !usePop;
      }
    
      console.log("Resulting array: " + array1);
    }
    
    popAndShift();

    Output:

    First array: A
    Second array: B,C,D,E,F,G,H,I
    Resulting array: A,I,B,H,C,G,D,F,E

    reply
    0
  • Cancelreply