JS解构赋值

article/2025/10/13 0:45:19

一、前言

解构赋值语法是一种 Javascript 表达式。通过解构赋值,可以将属性/值从对象/数组中取出,赋值给其他变量。本文将讨论解构赋值的作用与其用法。

目录

一、前言

二、用途

三、数组的解构

1.变量声明并且赋值时的解构

 2.默认值

 3.剩余数组赋值给一个变量

4.解构交换变量 

5.解析一个函数返回的数组

6.二维数组的解构

四、对象的解构

1.基本用法

2.给新的变量名赋值

五、综合

1.解析嵌套对象与数组

2.For of迭代与解构


二、用途

现在我们有一个数组,与三个变量,数组中有3个元素,我们想将数组中的三个元素分别对应赋值给三个变量,我们可以采用以下形式,即可实现。

const arr = ["孙悟空","猪八戒","沙和尚"]
let a,b,c;a= arr[0];
b= arr[1];
c= arr[2];
console.log(a,b,c);

        但是如果我们元素变成10个或者更多,以这种方式赋值就有一定难度,这时候就需要解构赋值:[a,b,c],给元素写在中括号中间,表示我们给三个变量一起来赋值。

[a,b,c]=["孙悟空","猪八戒","沙和尚"]
//表示数组的第一个元素赋值给第一个变量,第二个赋值给第二个变量,以此类推
console.log(a,b,c);

 我们可以看到两种赋值的效果是一样的。所以解构赋值,故名思意,就是将一个东西解析展开后再赋值给某个东西。

三、数组的解构

1.变量声明并且赋值时的解构

        我们有数组解构与对象解构两种形式,在实际操作中,以[ ]包裹的形式为数组的解构,我们可以直接声明同时解构赋值,我们可以实现声明同时完成解构赋值的操作。

arr = ['孙','悟','空']
let [d,e,f]= arr;
console.log(d,e,f);

 2.默认值

 let [g,h,i,j]=[1,2,3];console.log(g,h,i,j);

        我们可以看到 j 也进行了赋值,时候解构赋值后 j 的值就是undefined所以为了防止出现undefined的出现,我们可以先在左边对象先预设值默认值。

let a, b;[a=5, b=7] = [1];
console.log(a); // 1
console.log(b); // 7

 3.剩余数组赋值给一个变量

        我们在解析一个数组时,可以将数组剩余部分赋值给一个变量。 

let [n1,n2,...n3]=[1,2,3,4,5,6,7]//...获取剩余参数
console.log(n1,n2,n3)

 

4.解构交换变量 

没有解构赋值时,我们交换变量采用以下方式

let a1 = 10;
let a2 =20;let temp =a1;
a1 = a2;
a2=temp;
//这个是我们常规的操作
[a1,a2]=[a2,a1];//这样的解构能实现交换
//表达式左边与右边表示的意义不一样,左边表示的是变量,右边才表示的是值,所以可以通过这种方式实现变量值交换const arr1 = ["孙悟空","猪八戒"]
[arr1[0],arr[1]]=[arr1[1],arr[0]]//完成两个数组元素交换变量

5.解析一个函数返回的数组

function f() {return [1, 2];
}let a, b;
[a, b] = f();
console.log(a); // 1
console.log(b); // 2

6.二维数组的解构

const arr3 = [[1,2,3],[4,5,6]];
console.log(arr3)
//    假如我们要解构一个二维数组
let [[num1,num2,num3],[num4,num5,num6]]=arr3
//将num1-6分别对应二维数组的六个元素
arr4=[]
[[num1,num2,num3],arr4]=arr3//将num1,num2,num3为1,2,3,arr4为[4,5,6]

四、对象的解构

1.基本用法

 我们在解构对象时,采用以{ }包裹的形式。通过在{}中添加变量名,把对象的属性与{}中的属性名一 一对应实现解构赋值。与数组不同的是,对象的解构赋值不需要按照变量的顺序对应赋值。

const obj = {name:'qb',age:19,gender:'男'};
let {age,name,gender} = obj;
console.log(name,age,gender);

 let {address} = obj;
console.log(address)//undefined

对象中没有address属性就返回undefined

2.给新的变量名赋值

 可以从一个对象中提取变量并赋值给和对象属性名不同的新的变量名

let {name:a,age:b,gender:c} = obj;
console.log(a,b,c)

我们也可以与数组的解构形式相同,给变量先赋予默认值,也可以给新的变量名赋默认值。

五、综合

1.解析嵌套对象与数组

const metadata = {title: 'Scratchpad',translations: [{locale: 'de',localization_tags: [],last_edit: '2014-04-14T08:43:37',url: '/de/docs/Tools/Scratchpad',title: 'JavaScript-Umgebung'}],url: '/en-US/docs/Tools/Scratchpad'
};let {title: englishTitle, // renametranslations: [{title: localeTitle, // rename},],
} = metadata;console.log(englishTitle); // "Scratchpad"
console.log(localeTitle);  // "JavaScript-Umgebung"

2.For of迭代与解构

var people = [{name: 'Mike Smith',family: {mother: 'Jane Smith',father: 'Harry Smith',sister: 'Samantha Smith'},age: 35},{name: 'Tom Jones',family: {mother: 'Norah Jones',father: 'Richard Jones',brother: 'Howard Jones'},age: 25}
];for (var {name: n, family: {father: f}} of people) {console.log('Name: ' + n + ', Father: ' + f);
}// "Name: Mike Smith, Father: Harry Smith"
// "Name: Tom Jones, Father: Richard Jones"

 来源于mdn

以上内容如有错误,麻烦大家在评论区指正,让我们共同进步。 加油!!!

如果对您有帮助就给一个关注支持一下吧。 


http://chatgpt.dhexx.cn/article/p1LXDRas.shtml

相关文章

阿里云账号未开启手机号验证码登录解决方法

阿里云账号登录支持手机号验证码登录方式,但是如果是2022.4.1前注册的账号,需要先在账号中心开启手机号登录,才可以使用手机号登录。阿里云百科来详细说下阿里云账号开启手机号登录的方法: 阿里云账号手机号登录 阿里云账号支持…

如何使用阿里云短信服务实现登录页面,手机验证码登录?

1:个人如何使用阿里云短信服务? 2022如何使用个人阿里云短信服务?_linxiMY的博客-CSDN博客添加完成之后,等待审核!一般2个小时就会出来审核结果了,这里我因为注册申请时填写规则有误,足足审核了…

手机验证码登录,账号登录结合

本项目基于腾讯外包框架&#xff08;wei框架&#xff09; 地址&#xff1a;https://github.com/twinh/wei/tree/master/docs/zh-CN#wei HTML页面&#xff1a; 【基于bootstrap前端框架】 头部&#xff1a;<ul id"js-reset-tabs" class"nav tab-underline…

【手机号验证/前端】Vue2+elementUI编写一个手机号验证码登录页面,路由式开发(附完整代码)

目录 效果图&#xff1a; 一、template部分 二、style样式 三、script部分 1.先对手机号的格式进行一个判断 2.接下来就是表单验证规则rules 3.最后就是methods了 &#xff08;1&#xff09;首先我们给获取验证码绑定一个方法 &#xff08;2&#xff09;然后封装一个a…

浅谈手机验证码登录

注册和登录&#xff0c;是互联网产品的最基本功能&#xff0c;这里涉及到很多安全问题和用户便捷问题。今天&#xff0c;我们来简要聊一下手机验证码登录。 在之前的文章中&#xff0c;我们聊了注册登录原理及密码安全问题&#xff0c;这种方式是基于账号密码登录的。 然而&…

2022.9.13 手机验证码登录功能

总结一下今天在项目中完成的功能 手机验证码登录功能 用到的前端技术&#xff1a;vue、vuex、axios&#xff0c;element-ui组件库 功能实现总体思路&#xff1a; 一. 用户在登录界面输入手机号&#xff0c;通过表单验证后&#xff0c;点击按钮获取验证码 二. 用户输入手机验证…

【从零开始分析项目实战】12-阿里云手机验证码登录功能的实现

注&#xff1a;本文章基于黑马程序员相关视频及资料进行编写&#xff0c;代码简单&#xff0c;较容易理解&#xff0c;若有问题或者源码资料获取可以在评论区留言或者联系作者&#xff01; 文章目录 开篇一、短信发送&#xff08;1&#xff09;短信服务介绍&#xff08;2&#…

手机验证码登录

手机验证码登录 符号说明&#xff1a; []&#xff1a;表示可选或某些条件下流程。 需求说明&#xff1a; 用户可在登录页面使用手机验证码登录&#xff0c;若该手机号未绑定则输入验证码后还需输入用户账号密码进行绑定&#xff0c;绑定后则成功使用验证码登录。 用户可在…

登录模块(手机验证码)

本人为实习生,第一次写博客,写的不好的大家多多谅解 应公司近期需求,需要单独开发一个后台管理系统。 自己按实际业务写了一个登录接口已经实现,时序图如下 源码牵扯业务量太大,这里只放出部分关键实现源码,整合思路可以配合时序图去理解。 Controller层 package com…

java十大排序算法

十大排序算法在面试java过程中想必或多或少都会有。尤其是在笔试题上&#xff0c;有些大厂就让你现场写个十大排序。是不是一下子整懵了。。。 目录 一、首先先介绍下十大排序算法&#xff1a; 1、算法分类 2 、算法复杂度 3、 相关概念 二、详细分析各个算法 1、冒泡排…

Go语言十大排序算法

文章目录 Go语言十大排序算法0x01 冒泡排序0x02 选择排序0x03 插入排序0x04 希尔排序0x05 归并排序0x06 快速排序0x07 堆排序0x08 计数排序0x09 桶排序0x10 基数排序总结按时间复杂度分类&#xff1a;按稳定性分类按排序方式 Go语言十大排序算法 稳定&#xff1a;如果a原本在b前…

排序算法——十大排序算法总结与对比

一、十大排序算法复杂度对比 二、关于排序算法的总结 1、基数排序仅仅适用于整型数的排序&#xff0c;一般不与另外的排序方法一起比较。 2、关于算法的稳定性&#xff1a;不稳定的算法有 “快希选堆”——快速排序&#xff0c;希尔排序&#xff0c;选择排序和堆排序。 3、关…

十大排序算法(面试必备)

目录 简单排序 1、冒泡排序 2、选择排序 3、插入排序 高级排序 4、希尔排序&#xff08;缩小增量排序&#xff09; 5、归并排序 6、快速排序 7、计数排序 8、堆排序 9、桶排序 10、基数排序 总结&#xff1a; 1、十大排序算法对比 2、基数排序、计数排序、桶排序…

十大排序算法学习

Sort 排序类算法是非常常见的算法&#xff0c;包括了比较类排序与非比较类排序 排序能够解决很多问题&#xff0c;有的编程语言也提供了一些排序算法函数&#xff08;比如C的sort&#xff09;但是掌握基本的排序算法原理以及写法仍然是很重要的&#xff0c;并且排序也是面试常…

十大排序算法(Java)

目录 1.冒泡排序 2.快速排序 3.插入排序 4.希尔排序 5.选择排序 6.堆排序 7.归并排序 8.计数排序&#xff1a;速度快&#xff0c;一般用于整数排序 9.桶排序 10.基数排序 1.冒泡排序 冒泡排序思路&#xff1a;&#xff08;两层for循环&#xff09; 比较相邻的元素。…

十大排序算法(C++)

十大排序算法Sorting algorithm(C) 百度百科&#xff1a; 所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。排序算法&#xff0c;就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地…

十大排序算法——C语言实现

1.冒泡排序 ​ 冒泡排序&#xff08;Bubble Sort&#xff09;也是一种简单直观的排序算法。它重复地走访过要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换&#xff0c;也就是说该数…

Python实现十大排序算法

1.排序算法概述 非线性时间比较类排序&#xff1a;通过比较来决定元素间的相对次序&#xff0c;由于其时间复杂度不能突破O(nlogn)&#xff0c;因此称为非线性时间比较类排序。 线性时间非比较类排序&#xff1a;不通过比较来决定元素间的相对次序&#xff0c;它可以突破基于比…

Java实现十大排序算法

Java实现十大排序算法 十大排序算法分别为&#xff1a;选择排序、冒泡排序、插入排序、快速排序、归并排序、堆排序、希尔排序、桶排序、计数排序、基数排序。 本篇只是为了方便我在代码中直接复制调用&#xff0c;因此原理和思想解释的并不清楚&#xff0c;想看原理的朋友可…

十大排序算法(C++版)

十大排序算法 前言一、插入排序二、希尔排序三、冒泡排序四、快速排序五、选择排序六、归并排序七、堆排序八、计数排序九、桶排序十、基数排序总结 前言 什么是排序&#xff1f; 排序&#xff1a;将一组杂乱无章的数据按一定规律顺次排列起来。即&#xff0c;将无序序列排成一…