为了账号安全,请及时绑定邮箱和手机立即绑定

Javascript交换数组元素

Javascript交换数组元素

隔江千里 2019-08-06 17:18:24
Javascript交换数组元素有没有更简单的方法来交换数组中的两个元素?var a = list[x], b = list[y];list[y] = a;list[x] = b;
查看完整描述

3 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

您只需要一个临时变量。

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]。这是解构分配

分享编辑


查看完整回答
反对 回复 2019-08-06
?
侃侃无极

TA贡献2051条经验 获得超10个赞

如果您想要一个表达式,使用本机javascript,请记住,拼接操作的返回值包含已删除的元素。


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"

编辑:


的[0]是在作为表达式的结尾必要Array.splice()返回一个数组,并且在这种情况下,我们所需要的返回数组中的单个元件。


查看完整回答
反对 回复 2019-08-06
?
手掌心

TA贡献1942条经验 获得超3个赞

这似乎没问题....

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

Howerver使用

var b = list[y];

表示将在范围的其余部分存在b变量。这可能会导致内存泄漏。不太可能,但更好的避免。

将它放入Array.prototype.swap可能是一个好主意

Array.prototype.swap = function (x,y) {
  var b = this[x];
  this[x] = this[y];
  this[y] = b;
  return this;}

可以这样称为:

list.swap( x, y )

这是避免内存泄漏DRY的干净方法。


查看完整回答
反对 回复 2019-08-06
  • 3 回答
  • 0 关注
  • 938 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信