Nos dan la siguiente clase
class Queue{ constructor(){ this.data=[]; } add(record){ this.data.unshift(record) } remove(){ return this.data.pop() } peek(){ // console.log() let lastElement=this.data[this.data.length-1] return lastElement; } } sin usar ninguna función de matriz, debemos escribir una función de tejido que agregará elementos alternativamente como se muestra a continuación 
La función se ve así (es decir, toma dos argumentos/colas como se muestra a continuación)
function weave(sourceOne, sourceTwo) {}
Me gustaría saber si podemos resolver esto usando recursión ( no un ciclo while y no podemos declarar q3 * la nueva Cola fuera de la función) ,
el código que he escrito hasta ahora no funciona, ya que inicia la nueva cola cada vez que se llama a la función,
let track =0 function weave(sourceOne, sourceTwo) { if(track>0){ const q3 = new Queue() } track++ //in simple language //while sourceOne.peek() is true keep adding if(sourceOne.peek()){ q3.add(sourceOne.remove()) } if(sourceTwo.peek()){ q3.add(sourceTwo.remove()) } console.log(q3) if (sourceTwo.peek()|| sourceOne.peek()){ weave(sourceOne,sourceTwo) } else if( sourceTwo.peek()== null && sourceOne.peek()==null){ return q3 } }El error se da a continuación, gracias por cualquier ayuda!