Intenta interpretar el código de forma correcta antes de utilizarlo a tu trabajo y si ttienes algo que aportar puedes dejarlo en los comentarios.
Solución:
Solo necesita una variable temporal.
var b = list[y];
list[y] = list[x];
list[x] = b;
Editar secuestrando la respuesta principal 10 años después con una gran adopción de ES6 en nuestro haber:
Dado que array arr = [1,2,3,4]
puede intercambiar valores en una línea ahora así:
[arr[0], arr[1]] = [arr[1], arr[0]];
Esto produciría la array [2,1,3,4]
. Esta es una tarea de desestructuración.
Si desea una sola expresión, utilizando javascript nativo, recuerde que el valor de retorno de una operación de empalme contiene los elementos que se eliminaron.
var A = [1, 2, 3, 4, 5, 6, 7, 8, 9], x= 0, y= 1;
A[x] = A.splice(y, 1, A[x])[0];
alert(A); // alerts "2,1,3,4,5,6,7,8,9"
Editar:
los [0]
es necesario al final de la expresión como Array.splice()
devuelve un arrayy en esta situación requerimos el único elemento en el devuelto array.
Esto parece estar bien….
var b = list[y];
list[y] = list[x];
list[x] = b;
Sin embargo usando
var b = list[y];
significa un B la variable va a estar presente para el resto del alcance. Esto puede conducir potencialmente a una pérdida de memoria. Improbable, pero aún mejor evitarlo.
Tal vez sea una buena idea poner esto en Array.prototype.swap
Array.prototype.swap = function (x,y)
var b = this[x];
this[x] = this[y];
this[y] = b;
return this;
que se puede llamar como:
list.swap( x, y )
Este es un enfoque limpio para ambos evitando pérdidas de memoria y SECO.
Aquí tienes las comentarios y puntuaciones
Si te sientes motivado, eres capaz de dejar un enunciado acerca de qué te ha parecido este enunciado.