ES6 中的解构赋值 - 数组
解构赋值是 ES6 引入的一项很棒的特性。解构赋值是一种 JavaScript 表达式,它允许我们将数组中的值或对象的属性解包到不同的变量中。也就是说,我们可以从数组和对象中提取数据并将其赋值给变量。为什么需要这样做呢?
想象一下,如果我们想从一个数组中提取数据。以前,这是如何实现的呢?
var introduction = ["Hello", "I" , "am", "Sarah"];
var greeting = introduction[0];
var name = introduction[3];
console.log(greeting);//"Hello"
console.log(name);//"Sarah"
我们可以看到,以前从数组中提取数据时,需要重复执行相同的操作。ES6 的解构赋值机制让数据提取变得更加容易。这是为什么呢?本文将讨论数组的解构赋值。我的下一篇文章将讨论对象的解构赋值。让我们开始吧。
基本解构
如果我们想使用数组提取数据,使用解构赋值非常简单。让我们回顾一下第一个数组示例。为了避免重复操作,我们将采用以下方法。
var introduction = ["Hello", "I" , "am", "Sarah"];
var [greeting, pronoun] = introduction;
console.log(greeting);//"Hello"
console.log(pronoun);//"I"
我们也可以用同样的方法得到相同的结果。
var [greeting, pronoun] = ["Hello", "I" , "am", "Sarah"];
console.log(greeting);//"Hello"
console.log(pronoun);//"I"
先声明变量再赋值
变量可以在赋值之前像这样声明。
var greeting, pronoun;
[greeting, pronoun] = ["Hello", "I" , "am", "Sarah"];
console.log(greeting);//"Hello"
console.log(pronoun);//"I"
请注意,变量是从左到右设置的。因此,第一个变量获取数组中的第一个元素,第二个变量获取数组中的第二个元素,依此类推。
跳过数组中的元素
如果我们想获取数组中的第一个和最后一个元素,而不是第一个和第二个元素,并且只想赋值两个变量,该怎么办?这也可以做到。请看下面的例子。
var [greeting,,,name] = ["Hello", "I" , "am", "Sarah"];
console.log(greeting);//"Hello"
console.log(name);//"Sarah"
刚才发生了什么?看看变量赋值语句左侧的数组。注意,这里不是只有一个逗号,而是有三个。逗号分隔符用于在数组中跳过元素。所以,如果你想跳过数组中的某个元素,只需使用逗号即可。
我们再来一次。我觉得挺有意思的。我们跳过清单上的第一项和第三项。我们该怎么做呢?
var [,pronoun,,name] = ["Hello", "I" , "am", "Sarah"];
console.log(pronoun);//"I"
console.log(name);//"Sarah"
所以逗号分隔符起着关键作用。如果我们想跳过所有项目,只需这样做即可。
var [,,,,] = ["Hello", "I" , "am", "Sarah"];
分配数组的剩余部分
如果我们想将数组中的一些元素赋值给变量,并将数组中的其余元素赋值给一个特定的变量,该怎么办?我们会这样做。
var [greeting,...intro] = ["Hello", "I" , "am", "Sarah"];
console.log(greeting);//"Hello"
console.log(intro);//["I", "am", "Sarah"]
使用这种模式,您可以将数组的剩余部分解包并赋值给一个变量。
函数解构赋值
我们还可以从函数返回的数组中提取数据。假设我们有一个函数,它返回一个像下面这样的数组。
function getArray() {
return ["Hello", "I" , "am", "Sarah"];
}
var[greeting,pronoun] = getArray();
console.log(greeting);//"Hello"
console.log(pronoun);//"I"
我们得到了相同的结果。
使用默认值
可以为变量分配默认值,以防从数组中提取的值为空undefined。
var[greeting = "hi",name = "Sarah"] = ["hello"];
console.log(greeting);//"Hello"
console.log(name);//"Sarah"
name因此,由于数组中未定义“Sarah”,所以回退到“Sarah”。
使用解构赋值交换值
还有一点需要注意。我们可以使用解构赋值来交换变量的值。
var a = 3;
var b = 6;
[a,b] = [b,a];
console.log(a);//6
console.log(b);//3
接下来,我将撰写关于对象解构的文章。
有任何问题或补充吗?请留言。
感谢阅读 :)
文章来源:https://dev.to/sarah_chima/destructuring-assignment---arrays-16f