数组和对象的解构

news2024/12/24 21:33:53

1.解构的理解

解构是ES6提供的一种新提取数据的模式,它允许我们从数组或对象中有针对性拿到想要的数据。这种方式让数据访问和赋值变得更加简洁和直观。

2.数组的解构

数组解构允许直接从数组中提取值,并将这些值赋给声明的变量。这避免了使用索引来访问数组元素的需要。

(1)基本用法

const [a, b, c] = [1, 2, 3];  
console.log(a); // 输出: 1  
console.log(b); // 输出: 2  
console.log(c); // 输出: 3

(2)不完全解构

不想提取数组中的所有元素,可以在解构时忽略某些元素。

const [, I, ] = [1, 2, 3]; // 变量名被省略了  
console.log(I); // 输出: 2

(3)默认值

解构时还可以为变量指定默认值,如果解构的元素不存在或其值为undefined,则会使用默认值。

const [x, y = 2] = [1];  
console.log(x); // 输出: 1  
console.log(y); // 输出: 2

(4)扩展运算符(...)与解构结合

const [one,...two]=[1,2,3,4,5];
console.log(one);  // 输出: 1
console.log(two);  // 输出: [2,3,4,5]
</script>

注意:如果将扩展运算符用于数组赋值,只能放在参数的最后一位,否则会报错。(代码编辑器里也会标红)

const [...m,n]=[1,2,3,4,5];  // 报错SyntaxError: Rest element must be last element
const [Y,...X,Z]=[1,2,3,4,5]; // 报错

3.对象解构

对象解构比数组解构稍微复杂一些,与数组解构不同,对象解构时需要指定要提取的属性名。

(1)基本用法

const person = { name: 'Alice', age: 30 };  
const { name, age } = person;  
console.log(name); // 输出: Alice  
console.log(age);  // 输出: 30

(2)重命名属性

在解构时,我们还可以为提取的属性指定一个新的变量名。在例子中,使用了firstName: name的语法来将firstName属性的值赋给变量name。

const person = { firstName: 'Alice', age: 30 };  
const { firstName: name, age } = person;  
console.log(name); // 输出: Alice  
console.log(age);  // 输出: 30

(3)默认值

与数组解构类似,对象解构时也可以为变量指定默认值。在例子中,由于person对象中没有age属性,所以age变量被赋予了默认值25

const person = { name: 'Alice' };  
const { name, age = 25 } = person;  
console.log(name); // 输出: Alice  
console.log(age);  // 输出: 25

(4)深度嵌套对象的指定属性读取

对于深度嵌套的对象,读取指定属性方法如下:

1)利用老方法读取,逐层解构

const action = {
    address:{
        man:{
            sex: '男',
            age: 20,
        }
    }
}
const {address} = action;
const {man} = address;
const {sex} = man;
console.log(sex); // 男

2)简便方法,通过冒号加目标属性名的形式{属性名:{属性名:{属性名}} ,进行解构,直到拿到目标想要数据。

const action = {
    address:{
        man:{
            sex: '男',
            age: 20,
        }
    }
}
const {address:{man:{ages}}}=action;
console.log(ages); // 20

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1923510.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

802.11be MRU - 多资源单元

Wi-Fi 6中引入了OFDMA技术&#xff0c;频率资源以RU(Resource Unit)为粒度进行分配&#xff0c;Wi-Fi 6中支持26/52/106/242/484/996/2x996 Tone共计7种RU。Wi-Fi 7由于引入了320MHz 信道&#xff0c;则会多一种RU类型。不同信道带宽下&#xff0c;不同类型RU的数量如下图所示。…

通用型I2C接口的应用之综合应用(N32G45XVL-STB)

通用型I2C接口的应用之综合应用&#xff08;N32G45XVL-STB&#xff09; 目录 概述 1 软硬件接口 1.1 硬件接口 1.2 开发软硬件信息 1.3 SHT-20模块电路 1.4 0.9寸OLED模块介绍 2 驱动接口实现 2.1 SHT20驱动接口 2.2 OLED驱动接口 3 应用接口实现 3.1 软件框架 3.…

捷配笔记-PCB阻焊颜色对产品有什么影响?

阻焊层也称为阻焊层或阻焊剂。它是一种薄的聚合物层&#xff0c;应用于&#xff08;PCB&#xff09;。阻焊层的目的是保护PCB表面&#xff0c;并有助于防止焊桥。焊桥是两个导体之间的无意连接&#xff0c;通常是由于存在一小块焊料。需要注意的是&#xff0c;阻焊层被视为其单…

SSM整合及使用

SSM整合 介绍 SSM&#xff08;SpringSpringMVCMyBatis&#xff09;框架集由Spring、MyBatis两个开源框架整合而成&#xff08;SpringMVC是Spring中的部分内容&#xff09;&#xff0c;常作为数据源较简单的web项目的框架。 步骤 SSM整合主要是将各个框架的核心组件都交给sprin…

【机器学习】和【人工智能】在航空航天中的应用

作者主页: 知孤云出岫 目录 引言机器学习和人工智能在航空航天中的应用1. 预测性维护2. 飞行路径优化3. 自动驾驶飞行器 未来展望1. 增强人机协作2. 更智能的空中交通管理3. 高效的航空制造 结论参考文献 引言 随着科技的迅猛发展&#xff0c;机器学习和人工智能&#xff08;…

Goland 通道

channel通道 目录 channel通道 channel介绍 channel基本使用 有缓存通道和无缓存通道的区别 通道的初始化&#xff0c;写入数据到通道&#xff0c;从通道读取数据及基本的注意事项 channel的关闭和遍历 channel的关闭 为什么关闭 如何优雅地关闭通道 channel的遍历 chan…

亚马逊插件安装教程,新手必学的两个选品步骤

亚马逊插件安装教程&#xff0c;跟卖新手必学&#xff0c;选品两个步骤。 大家好&#xff0c;今天讲下erp的插件下载和跟卖采集。erp更新到13.8版本了。 点击右上角的插件下载&#xff0c;已经下载到桌面了&#xff0c;已被压缩。 点击设置&#xff0c;选择扩展&#xff0c;…

python-亲和数(赛氪OJ)

[题目描述] 古希腊数学家毕达哥拉斯在自然数研究中发现&#xff0c;220 的所有真约数(即不是自身的约数)之和为&#xff1a; 1245101120224455110&#xff1d;284 。 而 284 的所有真约为 1 、 2 、 4 、 71 、 142 &#xff0c;加起来恰好为 220 。人们对这样的数感到很惊奇&a…

【研路导航】重庆大学计算机保研面试真题分享交流

写在前面 在保研的道路上&#xff0c;面试是非常重要的一环。这里是成功保研到重庆大学的学长的计算机保研面试的部分真题及详细解答 ! Q 快速排序和合并排序&#xff1a; 快速排序(quicksort) 和合并排序(merge sort) 两种方法都将输入的待排序序列划分为2个子序列&#xf…

centos单机配置多个内网IP地址

centos单机配置多个内网IP地址 引配置1. 查看当前网络IP配置2. 打开网络配置目录3. 设置静态IP4. 编辑ifcfg-eno1:15. 重启网络配置 引 同一个局域网&#xff0c;但是对接的多个子系统使用了不同的网段&#xff0c;如一个系统主机IP地址是192.168.10.1&#xff0c;另一个系统主…

2024 辽宁省大学数学建模竞赛A题 风切变影响及处置 完整思路 代码结果分享(仅供学习)

风切变对航空安全会构成危害。航空人员需了解相关知识&#xff0c;掌握相应技术&#xff0c;从而在遭遇上述天气时最大程度的规避风险&#xff0c;保证飞行安全。 风切变是指在大气中相对比较短的距离内或时间段内产生的风速大小、方向大幅度变化的现象。通常将发生在距离地面…

Rust Hello

首先还是安装&#xff1a; 一定要换源&#xff0c;否则真的太慢了。 curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh 就是~/.cargo/config [source.crates-io] # 替换成你偏好的镜像源 replace-with tuna# 清华大学 5mb [source.tuna] registry "htt…

课程的概述

课程概述 课程类型 课程理论流派 制约课程开发的因素 课程设计的概念及两种模式 课程内容 课程评价 新课程改革理念

python基础语法 005 函数1-2 函数作用域

1 函数续 1.7 函数作用域 1.7.1 全局变量 定义在函数外部的变量全局变量在函数内部和函数外部都可以访问使用 a 100 def run():print("a {}".format(a))print(a) print(run())1.7.2 局部变量 函数是一个黑盒子&#xff0c;外面看不到盒子里面的东西&#xff0…

QEMU模拟器源码编译与使用

QEMU模拟器源码编译与使用 1 编译MySBIBenOS2 编译QEMU3 QEMU运行MySBIBenOS4 使用gdb调试QEMU5 通过QEMU调试指令6 小结 本文属于 《RISC-V指令集差分测试&#xff08;DiffTest&#xff09;系列教程》之一&#xff0c;欢迎查看其它文章。 1 编译MySBIBenOS 参考《NEMU模拟器…

AI绘画Midijourney操作技巧及变现渠道喂饭式教程!

前言 盘点Midijourney&#xff08;AIGF&#xff09;热门赚米方法&#xff0c;总有一种适合你之AI绘画操作技巧及变现渠道剖析 【表情包制作】 首先我们对表情包制作进行详细的讲解&#xff1a; 当使用 Midjourney&#xff08;AIGF&#xff09; 绘画来制作表情包时&#xff…

【Linux网络】网络基础

本篇博客整理了 Linux 网络编程的前置知识&#xff0c;例如网络的发展、协议和协议栈分层、网络通信原理、网络地址等&#xff0c;为后续进入 Linux 网络编程作铺垫。 目录 一、网络发展 二、网络协议 1&#xff09;协议的作用 2&#xff09;协议栈 3&#xff09;协议分层…

自动驾驶(萝卜快跑)是毁灭出租司机工作机会的灾难?

引言 自动驾驶技术的飞速发展在全球范围内引发了广泛的讨论和担忧&#xff0c;特别是在中国&#xff0c;自动驾驶出租车服务“萝卜快跑”成为了热门话题。本文探讨自动驾驶对出租司机工作机会的影响&#xff0c;以及这种技术变革背后的社会经济因素。 自动驾驶的历史与现状 …

yoloV8导出engine模型

yoloV8导出engine模型 引言&#xff1a; 目的是TensorRT加速YOLO实例分割模型。 本博客记录达成此目的所需的步骤&#xff0c;及步骤中可能遇到的问题。 as follow&#xff1a; 1. 首先导出onnx模型的脚本命令&#xff1a; yolo export modelbest.pt formatonnx opset12 simpl…

全网都在找数学建模美赛模版,免费直接复制,无需关注公众号!!!

文件夹结构如下 美版论文模版预览(截选) tex文件代码如下 \documentclass{mcmthesis} \mcmsetup{CTeX false, % 使用 CTeX 套装时&#xff0c;设置为 truetcn 1111111, problem ABCDEF,sheet true, titleinsheet true, keywordsinsheet true,titlepage false, abstra…