欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数组解构的其他用法 - Kaiqisan

程序员文章站 2023-12-22 19:56:34
...

数组解构的其他用法

Kaiqisanです,一つの学生プログラマーである 今天就讲讲前几节数组解构的剩余知识,可能用得比较少,但是,嘛!记住这些技巧在您未来的实战中一定会有用武之地,就像我学习日语,本来以为课本里面一个几乎用不到的一个单词,但是在我下午看日剧的时候,就再一次见到它了。所以,这也同理,这些冷门方法的产生不是让我们背它们的,而是让我们去使用它们。

今天要将的其他方法,主要有以下三点

  • 实现两个变量的值的交换

在我们以前的经验中,交换两个值需要第三个参数来暂时存储temp一个参数

let a  = 10
let b = 15

let temp
temp = a
a = b
b = temp

这样其实很麻烦,如果需要频繁地交换数据的话,还需要封装一个专门交换的方法,这样非常麻烦。

但是

使用数组解构的话变量交换将变得极其方便

[a, b] = [b, a]

通过交换映射,直接一句话就实现交换。

它的原理是这样的

let a = 10
let b = 15
let arr = [a, b]
[b, a] = arr

从这个原理,我们可以延伸为多个数据之间的数据交换,这可以节省大量的计算量和代码量。是很好的一种选择。


  • 对于二维数组等维数较高的数组也同样ok
let arr = [1, [2, 3], 4]
let [params1, [params2]] = arr
console.log(params1, params2) // 结果为params1 = 1, params2 = 2

它的原理是这样的

params1就像正常赋值一样直接把第一个成员 ”1“ 拿过来,对于params2来说,它是处于第二层,被第二个数组接着包裹,它的赋值过程如下

let [params1, [params2]] = arr
===>
[params2] = [2, 3]
===>
params2 = 2

这里进行了两次解构才能成功赋值

接下来,我们假设params2在被赋值的时候并没有被包裹在一个数组里面的

let arr = [1, [2, 3], 4]
let [params1, [params2]] = arr
console.log(params1, params2) // 结果为params1 = 1, params2 = 2

所以一个数组如果是一个n维数组,那么,要想赋值成功的话就最多要做出n次解构赋值,以下为一极端案例。

let arr = [1, 2, 3, [5, 6, 7, [8, [[11, 12], 9], 10]], 4]
// 现在试图拿到 12 我要怎么做?
// 答案在本篇文章末尾

如果左边被赋值的那部分参数写得不规范,是会报错的!

let arr = [1, 2, [3, 4, 5], 6]
let [params1, [params2]] = arr

在这里,[params2] 被赋予一个值 2,左为数组类型,右为数字类型,但是,这就导致了数据类型的错误,无法被赋值。
数组解构的其他用法 - Kaiqisan


  • 数组解构可以配合默认值一起使用
const namelist=["Kaiqisan","Jerry"]
const [a,b,c="John"] = na
melist

有时候,如果我们的参与赋值的数组的长度未定的话,就可以使用这个默认值,防止多余的那个被赋值的参数可怜地成为undefined。这也是程序强化健壮性的一个重要方法。

总结

数组解构的所有知识就到此为止了,虽然它有一些局限性,但是有一说一啊,这是一个好方法,是一个全新的定义数据的方法也可以用它衍生到别的用途比如数据交换。

  • 参考答案
let arr = [1, 2, 3, [5, 6, 7, [8, [[11, 12], 9], 10]], 4]
let [a, b, c, [d, e, f, [g ,[[, params]]]]] = arr
console.log(params) // 打印出来的就是答案,你明白了吗!?
相关标签: js知识库

上一篇:

下一篇: