¿Cómo puede ordenar una matriz sin mutar la matriz original?

Supongamos que quisiera una función de clasificación que devuelva una copia ordenada de la matriz ingresada. Intenté ingenuamente este

function sort(arr) {
  return arr.sort();
}

y lo probé con esto, lo que muestra que misort método está mutando la matriz.

var a = [2,3,7,5,3,7,1,3,4];
sort(a);
alert(a);  //alerts "1,2,3,3,3,4,5,7,7"

También probé este enfoque

function sort(arr) {
  return Array.prototype.sort(arr);
}

pero no funciona en absoluto.

Existe una forma directa de solucionar esto, preferiblemente una forma que no requiera mover manualmente mi propio algoritmo de clasificación o copiar cada elemento de la matriz en uno nuevo?

Respuestas a la pregunta(12)

Su respuesta a la pregunta