【问题标题】:How does this function to swap array elements work?这个交换数组元素的函数是如何工作的?
【发布时间】:2021-01-16 14:53:03
【问题描述】:

我在这里看到了这个函数,它将交换两个数组元素,但我似乎无法弄清楚它是如何工作的。看起来正在进行某种数组解构(?)。我只是不明白原来的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,b].includes(c) 来速记或陈述时

标签: javascript swap destructuring ecmascript-2016


【解决方案1】:

从右边开始:

[a[j], a[i]]

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

在左侧它正在解构

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

这相当于以下内容:

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

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

【讨论】:

  • 谢谢,这完全清除了它。我没有意识到也可以解构为现有的对象/数组属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-16
  • 1970-01-01
  • 2018-07-17
  • 2016-02-22
相关资源
最近更新 更多