javascript - 这个交换数组元素的函数是如何工作的?

标签 javascript swap destructuring ecmascript-2016

我在这里看到这个函数可以交换两个数组元素,但我似乎无法弄清楚它是如何工作的。看起来正在进行某种数组解构(?)。我只是不明白原始 data-array 是如何以及为什么实际改变的。

有人可以向我解释一下这是如何工作的吗?

const swap = (a, i, j) => {
  [a[i], a[j]] = [a[j], a[i]]  // ???
}

const data = [1, 2, 3, 4]

swap(data, 0, 2)

console.log(data)

最佳答案

从右边开始:

[a[j], a[i]]

这将创建一个包含两个元素的新数组:索引 j 处的元素,后跟索引 i 处的元素。

左边是解构

[a[i], a[j]] = 

所以这等同于以下内容:

a[i] = theNewArray[0];
a[j] = theNewArray[1];

由于这是在改变 a,因此对数组的任何引用都可以感受到这些变化,因此 data 将“看到”这些变化。

关于javascript - 这个交换数组元素的函数是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64145956/

相关文章:

string - 如何交换向量中不可复制的元素?

javascript - 为什么在 sinon js 中使用析构函数时 stub 函数不起作用?

javascript - 解构对象参数,还要引用参数作为对象?

javascript - 使用解构赋值和 indexOf() 交换数组值

php - 某些浏览器中 cookie 的未定义索引

javascript - Alexa NodeJS 在语音输出上失败,没有特定错误

java - 如何使用Servlet向DOM添加隐藏属性

javascript - 如何使用javascript从带有记录列表的输入框中获取平均值?

java - 使用java交换3*4矩阵中的列

javascript - 如何使用 onclick 交换两个元素的位置,包括它们的类/id?