sub*_*nid 3 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)Run Code Online (Sandbox Code Playgroud)
从右侧开始:
[a[j], a[i]]
Run Code Online (Sandbox Code Playgroud)
这将创建一个包含两个元素的新数组: index 处的元素j,后跟 index 处的元素i。
在左侧,它正在进行解构
[a[i], a[j]] =
Run Code Online (Sandbox Code Playgroud)
所以这相当于以下内容:
a[i] = theNewArray[0];
a[j] = theNewArray[1];
Run Code Online (Sandbox Code Playgroud)
由于这是 mutating a,因此对数组的任何引用都可以感受到这些更改,因此data将“看到”这些更改。
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |