是否有更简单的方法来交换数组中的两个元素?
var a = list[x], b = list[y];
list[y] = a;
list[x] = b;
是否有更简单的方法来交换数组中的两个元素?
var a = list[x], b = list[y];
list[y] = a;
list[x] = b;
当前回答
您只需要一个临时变量。
var b = list[y];
list[y] = list[x];
list[x] = b;
10年后,随着ES6的大量采用,编辑劫持了最重要的答案:
给定数组arr =[1,2,3,4],你现在可以在一行中交换值,如下所示:
[arr[0], arr[1]] = [arr[1], arr[0]];
这将产生数组[2,1,3,4]。这是解构赋值。
其他回答
在没有临时变量或ES6交换方法的数组中交换第一个和最后一个元素[a, b] = [b, a]
[a.pop(),…a.slice(1), a.shift()]
好吧,你不需要缓冲两个值-只有一个:
var tmp = list[x];
list[x] = list[y];
list[y] = tmp;
下面是一个不会改变列表的一行代码:
let newList =对象。赋值([],列表,{[x]:列表[y], [y]:列表[x]})
(使用了2009年问题发布时还没有的语言功能!)
使用ES6可以这样做…
假设你有这两个数组……
const a = ["a", "b", "c", "d", "e"];
const b = [5, 4, 3, 2, 1];
你想交换第一个值:
const [a0] = a;
a[0] = b[0];
b[0] = a0;
和值:
a; //[5, "b", "c", "d", "e"]
b; //["a", 4, 3, 2, 1]
您只需要一个临时变量。
var b = list[y];
list[y] = list[x];
list[x] = b;
10年后,随着ES6的大量采用,编辑劫持了最重要的答案:
给定数组arr =[1,2,3,4],你现在可以在一行中交换值,如下所示:
[arr[0], arr[1]] = [arr[1], arr[0]];
这将产生数组[2,1,3,4]。这是解构赋值。