JavaScript解构数组

还记得之前我们是如何读取到数组里面的元素的么?

const arr = [2, 3, 4];
const a = arr[0];
const b = arr[1];
const c = arr[2];

然后通过这个方式去读取数组中的数据;

现在我们可以使用解构赋值的方法去实现

const [x, y, z] = arr;
console.log(x, y, z);

在这里插入图片描述

这是一种解构赋值(Destructuring assignment)的写法。它允许我们从数组 arr 中提取值,并分别赋给变量 x, y, z。解构赋值可以用于数组、对象等数据结构,以便快速获取其中的值。在这个例子中,arr 是一个数组,通过解构赋值将其第一个元素赋给 x,第二个元素赋给 y,第三个元素赋给 z。然后通过 console.log 打印出这三个变量的值。

那如何使用解构的方式去或者对象中的数组呢?

const restaurant = {
  name: 'Classico Italiano',
  location: 'Via Angelo Tavanti 23, Firenze, Italy',
  categories: ['Italian', 'Pizzeria', 'Vegetarian', 'Organic'],
  starterMenu: ['Focaccia', 'Bruschetta', 'Garlic Bread', 'Caprese Salad'],
  mainMenu: ['Pizza', 'Pasta', 'Risotto'],
};

● 如上方的数组,我们想获取categories的第一个和第二个数据,使用解构的的方式如下:

const [first,second] = restaurant.categories;
console.log(first,second);

在这里插入图片描述

● 那如果我们想获取第一个和第三个的数据呢,我们只要给他留一个即可

const [first, , second] = restaurant.categories;
console.log(first, second);

在这里插入图片描述

● 再看上面的数据,例如我们现在需要将categories数组中的Italian和Vegetarian进行替换,按照以前的方式,我们可能会这么做

let [main, , secondary] = restaurant.categories;
console.log(main, secondary);

const temp = main;
main = secondary;
secondary = temp;
console.log(main,secondary);

在这里插入图片描述

但是我们通过解构,可以很轻松的进行实现!

let [main, , secondary] = restaurant.categories;
console.log(main, secondary);
 
[main, secondary] = [secondary, main];
console.log(main, secondary);

在这里插入图片描述

● 我们也可以通过解构的方式再函数中返回数组;

const restaurant = {
  name: 'Classico Italiano',
  location: 'Via Angelo Tavanti 23, Firenze, Italy',
  categories: ['Italian', 'Pizzeria', 'Vegetarian', 'Organic'],
  starterMenu: ['Focaccia', 'Bruschetta', 'Garlic Bread', 'Caprese Salad'],
  mainMenu: ['Pizza', 'Pasta', 'Risotto'],
  
  order: function (starterIndex, mainIndex) {
     return [
      restaurant.starterMenu[starterIndex],
      restaurant.mainMenu[mainIndex],
    ];
  },
};

例如上方的函数,如果我们使用之前的方式我们会这个做

console.log(restaurant.order(2, 0));

在这里插入图片描述

当然我们也可以将接受到的数组解构出来

const [starter, mainCourse] = restaurant.order(2, 0);
console.log(starter, mainCourse);

在这里插入图片描述

嵌套数组的解构

const nested = [2, 4, [5, 6]];
const [i, ,j] = nested;
console.log(i,j);

在这里插入图片描述

● 但是如果我们真的想把内部数组的数据给读取到,我们该怎么做呢?

const nested = [2, 4, [5, 6]];
const [i, , [j,k]] = nested;
console.log(i,j,k);

在这里插入图片描述

默认类型

● 如果我们的解构数据比我们数组的实际数据多会是怎样的呢?

const [p, q, r] = [8, 9];
console.log(p, q, r);

在这里插入图片描述

这时候,我们有可能给数组中的数据给一个默认值,

const [p = 1, q = 1, r = 1] = [8, 9];
console.log(p, q, r);

在这里插入图片描述

这有时候很有用,例如当我们从API获取数据时;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python 哈希表的实现——字典

哈喽大家好,我是咸鱼 接触过 Python 的小伙伴应该对【字典】这一数据类型都了解吧 虽然 Python 没有显式名称为“哈希表”的内置数据结构,但是字典是哈希表实现的数据结构 在 Python 中,字典的键(key)被哈希&#x…

接口测试之文件上传

在日常工作中,经常有上传文件功能的测试场景,因此,本文介绍两种主流编写上传文件接口测试脚本的方法。 首先,要知道文件上传的一般原理:客户端根据文件路径读取文件内容,将文件内容转换成二进制文件流的格…

Halcon [fill_up_shape],[close_circle],[dilation_circle]和[shape_trans]图像处理时填充区别

文章目录 文章专栏前言两者的区别fill_up_shapeshape_transclose_circledilation_circle 总结 文章专栏 我的Halcon开发 CSDN专栏 前言 本文用的案例是:Example: %HALCONEXAMPLES%/hdevelop/Applications/Completeness-Check/ball.hdev 两者的区别 [shape_trans]是…

1、Mysql架构与历史

Mysql逻辑架构 最上层是服务并不是Mysql所独有的,大多数基于网络的客户端/服务器的工具或者服务都有类似的架构,比如连接处理,授权认证,安全等。 第二层是Mysql比较有意思的部分。大多数Mysql的核心服务都在这一层,…

WGCLOUD 中文繁体版本 下载

wgcloud 繁体版下载 下載繁體版安裝包 - WGCLOUD

福州大学《嵌入式系统综合设计》实验七:图像灰度直方图

一、实验目的 直方图是一种统计特征,在图像中广为使用,因为具有计算简便、不受平移、旋转的影响,因此可以作为图像的一种有效的局部/全局特征来表示图像,是图像的重要特征之一。直方图在SIFT算法、HOG算法、直方图均衡等图像特征…

C练习题_3

一、单项选择题(本大题共20小题,每小题2分,共40分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。 以下正确的C语言自定义标识符是() A. la B. 2a C. do D. a.12 2.在C语言中,错…

_STORAGE_WRITE_ERROR_ thinkphp报错问题原因

整个报错内容如下 Uncaught exception Think\Exception with message _STORAGE_WRITE_ERROR_:./Runtime/Cache/Home/1338db9dec777aab181d4e74d1bdf964.php in C:\inetpub\wwwroot\ThinkPHP\Common\functions.php:101 Stack trace: #0 C:\inetpub\wwwroot\ThinkPHP\Library\…

1.6 C语言之数组概述

1.6 C语言之数组概述 一、数组二、练习 一、数组 所谓数组,就是内存中一片连续的空间,可以用来存储一组同类型的数据 数组有下标,从0开始,可以理解为是给数组中的元素编号,便于后续寻址访问 我们来编写一个程序&…

Linux基本指令(前篇)

目录 1.ls指令 2.pwd指令 3.cd 指令 4.touch指令 5.mkdir指令(重要) 6.rmdir指令 && rm 指令(重要) 7.man指令(重要) 1.ls指令 ls 选项 目录或文件 对于目录,该命令列出该目录下的所…

解决Linux Visual Studio Code显示字体有问题/Liunx下Visual Studio Code更换字体

01、具体问题 在Linux下VsCode控制台与代码区显示异常,如下图所示: 代码显示 终端显示 02、解决方案 下载字体 [rootlocalhost mhzzj]$ cd /usr/share/fonts # 进入目录 [rootlocalhost fonts]$ sudo yum install git # 下载字体 [rootlocalhost fo…

Linux:Ubuntu系统安装软件

本次以安装vim为例 sudo apt-get remove vim //卸载vim sudo apt-get install vim //安装vim sudo apt-cache show vim //获取vim软件信息安装时间较长。 安装完成后,执行下第三条指令,测试下是否安装成功即可。

C3 多媒体查询

文章目录 前言CSS3 多媒体查询CSS2 多媒体类型CSS3 多媒体查询浏览器支持多媒体查询语法CSS3 多媒体类型多媒体查询简单实例 媒体类型媒体功能更多实例后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:CSS 🐱‍👓博…

MFC添加窗体菜单栏和消息响应

在资源视图右键,添加资源,选择Menu,新建 添加的菜单在资源菜单的Menu目录下 双击直接编辑输入菜单 之后在要添加菜单的窗体的属性Menu里面填写菜单的ID就可以了 如何给菜单添加点击响应? OnCommand是MFC中的一个消息处理函数,用于处理在窗口或控件被激活时发出的WM_CO…

Multi-Modal Meta Continual Learning

⊙ \odot ⊙denotes the modulation operator,Cont. is the continuum data 辅助信息 作者未提供代码

macos安装小软件 cmake

一,cmake下载主页 Download CMake 二,下载,解压,配置,编译,安装 0. 假设macos中已经存在了 clang和make工具 1. 通过网页下载最新的稳定版 cmake***.tar.gz 源代码 2. tar zxf cmake***.tar 3. cd cmake***…

循环队列的实现(附完整代码)

题目解读 本题是要求我们设计一个循环的队列,循环队列要有以下功能: 1.获取队首元素,若队列为空返回-1 2.获取队尾元素,若队列为空,则返回-1 3.插入元素,插入成功返回真 4.删除元素,删除成功返回…

我的第一个Arduino点灯程序

我简直难以相信,什么都不用配置,就这么几行代码,就可以blink了 void setup() {// Set up the built-in LED pin as an output:pinMode(PA1, OUTPUT); }void loop() {digitalWrite(PA1,!digitalRead(PA1));// Turn the LED from off to on, o…

ASP产品通过网络安全专用产品安全认证

什么是网络安全专用产品安全检测? 网络安全专用产品安全检测是指对网络关键设备和网络安全专用产品进行安全性评估和检测,以确保其符合相关标准和法规的要求,能够有效地抵御网络攻击和威胁。该检测由具备资格的机构进行,采用认证…

Windows Server 2012R2 修复CVE-2016-2183(SSL/TLS)漏洞的办法

一、漏洞说明 Windows server 2012R2远程桌面服务SSL加密默认是开启的,且有默认的CA证书。由于SSL/ TLS自身存在漏洞缺陷,当开启远程桌面服务,使用漏洞扫描工具扫描,发现存在SSL/TSL漏洞。远程主机支持的SSL加密算法提供了中等强度的加密算法,目前,使用密钥长度大于等于5…