千家信息网

JavaScript解构赋值的常见场景有哪些

发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章主要为大家展示了"JavaScript解构赋值的常见场景有哪些",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"JavaScript解构赋值的常见场景
千家信息网最后更新 2025年01月18日JavaScript解构赋值的常见场景有哪些

这篇文章主要为大家展示了"JavaScript解构赋值的常见场景有哪些",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"JavaScript解构赋值的常见场景有哪些"这篇文章吧。

1. 提取数据

先来看看如何在 JavaScript 中解构对象,可以从这个商品对象的简单示例开始。

const product = {    id: 1,    title: "Nike Air Zoom Pegasus 38",    product_image: "/resources/products/01.jpeg",    shown: "White/Pure Platinum/Midnight Navy/Wolf Grey",    price: 120,};const { id, price, title } = product;

这样,就可以通过以下方式访问相应的属性:

console.log(id); // 1console.log(price); // 120console.log(title); // Nike Air Zoom Pegasus 38

解构,能够让代码更加清晰简洁。如果需要解构一个更复杂的对象呢?即对象中的对象。

现在假设需要从商品列表数据中获取其中一个商品的属性,如下:

const products = [    {        id: 1,        title: "Nike Air Zoom Pegasus 38",        price: 120,    },    {        id: 2,        title: "Nike Air Zoom Alphafly NEXT%",        price: 275,    },    {        id: 3,        title: "Nike Zoom Fly 4",        price: 89.0,    },];

在这里,产品列表嵌套了几层,需要访问商品的信息,可以解构尽可能多的级别以获取商品对象的属性。

const [tmp, { id, title, price }] = products;console.log(id); // 2console.log(title); // Nike Air Zoom Alphafly NEXT%console.log(price); // 275

上面的代码仅用于展示其用法,项目开发中不建议再数组中这样获取对象信息。

通常,数据列表不一定非要数组,从获取效率来说,map 对象的访问比数组效率要高。可以将上面的数据改为 map 对象,如下:

const products = {    1: {        title: "Nike Air Zoom Pegasus 38",        price: 120,    },    2: {        title: "Nike Air Zoom Alphafly NEXT%",        price: 275,    },    3: {        title: "Nike Zoom Fly 4",        price: 89.0,    },};const {    2: { id, title, price },} = products;console.log(id); // 2console.log(title); // Nike Air Zoom Alphafly NEXT%console.log(price); // 275

在 JavaScript 中,数据可以是变量和方法,因此解构赋值也适合用在函数参数的定义,如下:

const printArticle = ({ title, remark }) => {    console.log(title);    console.log(remark);};printArticle({    title: "JavaScript 解构赋值",    remark: "解构赋值的实用场景介绍",});

在使用 React 或 Vue 等框架时,有很多解构赋值的地方,如方法的引入等等。

2. 别名取值

如果想创建与属性名称不同的变量,那么可以使用对象解构的别名功能。

const { identifier: aliasIdentifier } = expression;

identifier 是要访问的属性的名称,aliasIdentifier 是变量名称。具体用法如下:

const products = {    1: {        title: "Nike Air Zoom Pegasus 38",        price: 120,    },    2: {        title: "Nike Air Zoom Alphafly NEXT%",        price: 275,    },    3: {        title: "Nike Zoom Fly 4",        price: 89.0,    },};const {    2: { price: productPrice },} = products;console.log(productPrice); // 275

3. 动态属性

可以使用动态名称提取到变量属性(属性名称在运行时已知):

const { [propName]: identifier } = expression;

propName 表达式应计算为属性名称(通常是字符串),标识符应指示解构后创建的变量名称,用法如下:

const products = {    1: {        title: "Nike Air Zoom Pegasus 38",        price: 120,    },    2: {        title: "Nike Air Zoom Alphafly NEXT%",        price: 275,    },    3: {        title: "Nike Zoom Fly 4",        price: 89.0,    },};const productKey = "1";const { [productKey]: product } = products;console.log(product); // { title: 'Nike Air Zoom Pegasus 38', price: 120 }

上面代码中,可以通过更新 productKey 的值进而使得 product 的值也跟随变化。

4. 对象解构中的 Rest

将 rest 语法添加到解构中,Rest 属性收集那些尚未被解构模式拾取的剩余可枚举属性键。

const { identifier, ...rest } = expression;

解构后,变量标识符包含属性值。 rest 变量是一个具有其余属性的普通对象。

const product = {    title: "Nike Air Zoom Pegasus 38",    price: 120,    quantity: 5,    category_id: 1,    reviews: 9830,    total: 45,};const { title, ...others } = product;console.log(others); // { price: 120, quantity: 5, category_id: 1, reviews: 9830, total: 45 }

对于数组,可以通过 Rest 的实现首尾值的获取:

const numbers = [1, 2, 3];const [head, ...tail] = numbers;console.log(head); // 1console.log(tail); // [ 2, 3 ]

5. 默认值

正如前面介绍的那样可以在解构数组时为其分配默认值:

const RGBA = [255, 34];const [R, G, B = 0, A = 1] = RGBA;console.log(R); // 255console.log(G); // 34console.log(B); // 0console.log(A); // 1

这样,可以将确保在 B、A 未定义的情况下有一个默认值。

以上是"JavaScript解构赋值的常见场景有哪些"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

属性 对象 变量 名称 商品 数据 场景 数组 常见 代码 内容 可以通过 篇文章 信息 别名 动态 效率 方法 标识 标识符 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发营业执照照片 办公系统软件开发计划 深圳光学设计软件开发公司 串口服务器源代码 长治软件开发联系方式 供电所开展网络安全保障工作 征信基础数据库变更 服务器安全狗卸栽要密码 软件开发程序员最最工资多少 新浪云创建数据库 ctf网络安全大赛中国战队有 直销软件开发需要注意什么 最有优先的三个网络安全 玫琳凯数据库 网络安全等级保护建设方案 战舰世界亚服海岛服务器怎么弄 mc单人模式无法连接至服务器 数据库系统运行安全的内容 软件开发进阶系列图 移动模块如何发送消息给服务器 软考数据库工程师哪一年难考 大唐网络安全组织 csgo服务器炸了操控有延迟 再生邦网络技术 湖北正规软件开发服务价钱 乌班图服务器版怎么分区 南京销售管理软件开发平台 宜兴智能软件开发价格 第二届强网网络安全大赛 mc官方将ice服务器告上法庭
0