Для краткости, вот уродливая однострочная версия, которая лишь немного менее уродлива, чем все конкататы и нарезки выше. Принятый ответ - действительно путь, и более читаемый.
Дано:
var foo = [ 0, 1, 2, 3, 4, 5, 6 ];
если вы хотите поменять местами значения двух индексов (a и b); тогда это будет сделано:
foo.splice( a, 1, foo.splice(b,1,foo[a])[0] );
Например, если вы хотите поменять местами 3 и 5, вы можете сделать это следующим образом:
foo.splice( 3, 1, foo.splice(5,1,foo[3])[0] );
или
foo.splice( 5, 1, foo.splice(3,1,foo[5])[0] );
Оба дают одинаковый результат:
console.log( foo );
// => [ 0, 1, 2, 5, 4, 3, 6 ]
# splicehatersarepunks:)