原文标题:5有趣的使用JavaScript Destructuring
原文链接:dmitripavlutin.com/5-interesti…
定期回顾我写的JS代码,我发现解构运算无处不在。
获取对象的属性和访问数组内容是都是很常用的操作。而解构运算使得这些操作变得非常简单明了。
在这篇文章中,我将会讲解JS解构不同于常见用法的五种使用技巧。
常见的交互两个变量值的方法都需要借助一个额外的变量,看一个简单的例子:
让=1; 让b=2; 让温度; temp=一个; a=b; b=temp; 一个;//=比;2 b;//=比;1
temp是一个临时变量,在例子中存储了变量一个的值,b的值赋给了一个,最后把临时的值赋给了b。
解构运算使得交换变量的值变得非常简单,不需要借助第三个临时变量:
让=1; 让b=2; [a, b]=[b, a]; 一个;//=比;2 b;//=比;1
[a, b]=[b]是一个解构运算。在等号的右侧,创建了一个数组(b),对应的值为(2,1)。数组的第一个值2被解构赋值给了一个,第二项1被解构赋值给了b。
即使这种方式仍然创建了一个临时数组,但是解构赋值对于交换变量的值仍然是非常高效简单的方式。
这种方式并没有什么限制。你还可以同时交互更多的变量值,比如:
让0=2; 让> const颜色=[]; 让firstColor=鞍住? 如果颜色。长度比;0){ firstColor=颜色[0]; } firstColor;//=比;“白色”
幸运的是,数组解构可以更快捷高效的实现相同的效果:
const颜色=[]; const [firstColor=鞍咨盷=颜色; firstColor;//=比;“白色”
<代码> const [firstColor=鞍咨盷=颜色;> 代码将颜色数组的第一个元素赋值给了变量firstColor。如果这个数组的下标为0的位置上没有任何元素(注:为未定义时即认为为空),白人将作为默认值赋值给firstColor。
数组解构是非常灵活的,如果你只想访问数组的第二个元素,方法如下所示:
const颜色=[]; const [secondColor="黑色"]=颜色; secondColor;//=比;“黑色”
在解构表达式的左边写一个逗号:意味着数组的第一个元素被忽略掉.colors数组下标为1的元素被解构赋值给了变量secondColor。
从我开始使用反应,到后来的回来的,我被迫开始写一些遵循不可变原则的代码。刚开始的时候确实有点不适应,不过后来我就意识到了这种方式的好处:它使得处理单向数据流更加容易。
不可变原则禁止修改对象。幸运的是,解构可以帮助你在遵循不可变原则的同时完成这些操作。
将解构与展开运算符(其他操作符)结合使用来移除数组的第一个元素:
const数量=(1、2、3); const [,……fooNumbers]=数字; fooNumbers;//=比;(2、3) 数字;//=比;(1、2、3)
这个解构操作<代码> [,……fooNumbers]=> 代码数量创建了一个新的数组fooNumbers,这个数组包含数字除了第一个元素外的其余元素。
数字数组并没有被改变,这种方式遵循了不可变原则。
除此之外,你也可以在遵循不可变原则的同时使用同样的方法来删除一个对象的属性。如下所示,删除大对象的foo属性:
const大={ 喷火:“foo”价值, 栏:“价值栏”, } const {foo,……小}=大; 小;//=比;{酒吧:“价值酒吧”} 大;//=祝辞{foo:“价值foo”栏:“价值酒吧”}
上述方法将解构与对象展开运算符结合起来使用,创建了一个新的对象小,这个新对象包含大对象除了foo属性之外的所有属性。
在前面几部分内容中,都是解构的数组。实际上解构运算是可以用于所有的可迭代对象的。
许多原生的基础类型和对象都是可迭代的,例如数组,类数组,字符串,组集合和映射集合。