千家信息网

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

发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章主要为大家展示了"JavaScript解构赋值的常见场景有哪些",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"JavaScript解构赋值的常见场景
千家信息网最后更新 2025年11月08日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安全错误 数据库的锁怎样保障安全 国风网络技术有限公司网站 互联网兼职软件开发 厦门339互联网科技 网络安全法公益广告下载 网络安全协调局李云峰 企业级数据库有哪些 大学生网络安全宣传周主题 北京科技大学互联网行业 网上销售管理系统数据库设计 查询能不能建立数据库 阿里云轻量服务器 安全规则 免费的中文数据库有哪些 现代化网络安全管理 易语言http服务器 计算机软件开发公司主要做什么 通信网络安全日是几月几号 江西软件开发定制市场价格 服务器运行按键精灵 小学网络安全教育总结4篇 河南亿得软件开发 江西iosapp软件开发 数据库怎么才不被盗 爱尚互联网络科技有限公司 青岛联想服务器哪里有 有没有网络安全之类的程序 软件开发公司宣传手册怎么写 如何确认远程服务器联网状态 传世游戏老掉线是服务器原因吗 网络安全学院 东西湖 湛江销售软件开发常见问题
0