是否有更简单的方法来交换数组中的两个元素?

var a = list[x], b = list[y];
list[y] = a;
list[x] = b;

当前回答

Var arr = [1,2]; 加勒比海盗。拼接(0,2,arr[1], arr[0]); console.log (arr);/ / (2, 1)

其他回答

在没有临时变量或ES6交换方法的数组中交换第一个和最后一个元素[a, b] = [b, a]

[a.pop(),…a.slice(1), a.shift()]

好吧,你不需要缓冲两个值-只有一个:

var tmp = list[x];
list[x] = list[y];
list[y] = tmp;

你可以交换任意数量的对象或文字,甚至是不同类型的对象或文字,使用一个简单的恒等函数,如下所示:

var swap = function (x){return x};
b = swap(a, a=b);
c = swap(a, a=b, b=c);

针对你的问题:

var swap = function (x){return x};
list[y]  = swap(list[x], list[x]=list[y]);

这在JavaScript中是可行的,因为它接受额外的参数,即使它们没有声明或使用。赋值a=b等,发生在a被传递到函数之后。

那么Destructuring_assignment呢

var arr = [1, 2, 3, 4]
[arr[index1], arr[index2]] = [arr[index2], arr[index1]]

还可以推广到

[src order elements] => [dest order elements]

试试这个功能…

$(document).ready(function () { var pair = []; var destinationarray = ['AAA','BBB','CCC']; var cityItems = getCityList(destinationarray); for (var i = 0; i < cityItems.length; i++) { pair = []; var ending_point = ""; for (var j = 0; j < cityItems[i].length; j++) { pair.push(cityItems[i][j]); } alert(pair); console.log(pair) } }); function getCityList(inputArray) { var Util = function () { }; Util.getPermuts = function (array, start, output) { if (start >= array.length) { var arr = array.slice(0); output.push(arr); } else { var i; for (i = start; i < array.length; ++i) { Util.swap(array, start, i); Util.getPermuts(array, start + 1, output); Util.swap(array, start, i); } } } Util.getAllPossiblePermuts = function (array, output) { Util.getPermuts(array, 0, output); } Util.swap = function (array, from, to) { var tmp = array[from]; array[from] = array[to]; array[to] = tmp; } var output = []; Util.getAllPossiblePermuts(inputArray, output); return output; } <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>