当前位置: 首页 > Web前端 > HTML5

JavaScript解构赋值的5个常见场景和例子

时间:2023-04-05 19:24:12 HTML5

解构赋值语法是一个JavaScript表达式。通过解构赋值,可以从对象/数组中取出属性/值,赋值给其他变量。该语法是ECMAscript6规范引入的新语法,可以更方便地从数组和对象中获取值。提取数据让我们看看如何在JavaScript中解构对象,从这个简单的产品对象示例开始。constproduct={id:1,title:"NikeAirZoomPegasus38",product_image:"/resources/products/01.jpeg",显示:"White/PurePlatinum/MidnightNavy/WolfGrey",price:120,};const{id,price,title}=产品;这样就可以通过console.log(id)访问对应的属性;//1console.log(价格);//120console.log(标题);//NikeAirZoomPegasus38copy代码解构,可以让代码更清晰简洁。如果需要解构更复杂的对象怎么办?即,对象中的对象。现在假设你需要从商品列表数据中获取其中一个商品的属性,如下:constproducts=[{id:1,title:"NikeAirZoomPegasus38",price:120,},{id:2,title:"NikeAirZoomAlphaflyNEXT%",price:275,},{id:3,title:"NikeZoomFly4",price:89.0,},];复制代码到这里,商品列表嵌套了好几层,需要访问item的信息,尽可能多的层级解构得到item对象的属性。const[tmp,{id,title,price}]=products;console.log(id);//2console.log(标题);//NikeAirZoomAlphaflyNEXT%console.log(price);//上面的275代码只是为了展示其用法,不建议在项目开发中获取数组中的对象信息。通常,数据列表不必是数组。在获取效率上,map对象的访问比数组更高效。可以把上面的数据换成一个地图对象,如下:constproducts={1:{title:"NikeAirZoomPegasus38",price:120,},2:{title:"NikeAirZoomAlphaflyNEXT%",price:275,},3:{title:"NikeZoomFly4",price:89.0,},};const{2:{id,title,price},}=products;console.log(id);//2console.log(标题);//NikeAirZoomAlphaflyNEXT%console.log(price);//275copycode在JavaScript中,数据可以是变量和方法,所以解构赋值也适用于函数参数的定义,如下:constprintArticle=({title,remark})=>{console.log(title);console.log(remark);};printArticle({title:"JavaScript解构赋值",remark:"解构赋值实用场景介绍",});在使用React或者Vue等框架的时候,解构赋值的地方很多,比如方法的引入等等。别名值如果想创建一个具有不同属性名的变量,可以使用对象解构的别名功能。const{标识符:aliasIdentifier}=表达式;identifier是要访问的属性名,aliasIdentifier是变量名。具体用法如下:constproducts={1:{title:"NikeAirZoomPegasus38",price:120,},2:{title:"NikeAirZoomAlphaflyNEXT%",price:275,},3:{title:"NikeZoomFly4",price:89.0,},};const{2:{price:productPrice},}=products;console.log(productPrice);//可以使用动态名称将275个动态属性提取到变量中Property(属性名称在运行时已知):const{[propName]:identifier}=expression;propName表达式求值为属性名(通常为字符串),标识符表示解构后创建的变量名,用法如下:constproducts={1:{title:"NikeAirZoomPegasus38",price:120,},2:{title:"NikeAirZoomAlphaflyNEXT%",price:275,},3:{title:"NikeZoomFly4",price:89.0,},};constproductKey="1";const{[productKey]:产品}=产品;安慰。日志(产品);//{title:'NikeAirZoomPegasus38',price:120}在上面的代码中,您可以通过更新productKey的值来更改product的值。对象解构中的Rest将rest语法添加到解构中,RestProperties收集那些剩余的未被解构模式拾取的可枚举属性键。const{标识符,...rest}=表达式;解构时,变量标识符包含属性值。其余变量是具有其余属性的普通对象。constproduct={title:"NikeAirZoomPegasus38",price:120,quantity:5,category_id:1,reviews:9830,total:45,};const{title,...others}=product;console.日志(其他);//{price:120,quantity:5,category_id:1,reviews:9830,total:45}复制代码对于数组,可以通过Rest:constnumbers=[1,2,3]获取第一个和最后一个值];const[head,...tail]=numbers;console.log(head);//1console.log(tail);//[2,3]默认值可以是如上所述的解构数组,当给它赋默认值时:constRGBA=[255,34];const[R,G,B=0,A=1]=RGBA;控制台日志(R);//255console.log(G);//34console.log(B);//0console.log(A);//1这样就可以保证在没有定义B和A的情况下,有一个默认值。总结解构是一个非常有用的特性,它被添加到ES6版本的JavaScript中。通过解构,您可以快速轻松地将对象和数组中的属性或数据提取到单个变量中。它适用于嵌套对象,并且可以使用...运算符对数组进行赋值。