ES实用的深度解构赋值方法

这篇具有很好参考价值的文章主要介绍了ES实用的深度解构赋值方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ES实用的深度解构赋值方法,JavaScript,javascript

  • ES6 中允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。
  • 使用解构赋值可以将复杂的代码整理的更加干净整洁。

1.解构对象

在没有使用解构之前,想要确定对象中的某些属性,那么就需要从对象中获取属性然后赋值给变量,这样会让代码显得非常冗余,如下代码所示:

let obj = {name:"张三",age:22};
let name = obj.name;
let age = obj.age;
console.log(name,age);

// 张三 22

1)基本解构格式

如果使用解构的话,只需要如下面格式所写即可,保持将变量名和对象属性名同名才可取到值。

let {name,age} = {name:"张三",age:22};
console.log(name,age);

2)变量别名

如果要解构的对象中的属性名和外部的名称重名了,将会报错,可以使用别名的方式进行解构,如下所示:

let name="王五";
let {name:newName,age} = {name:"张三",age:22};
console.log(newName,age);

3)变量默认值

如果目标对象属性中没有要解构的属性,不指定默认值,那么将会undefined,此时可以给解构变量写默认值,如下所示:

let {name,age,gender="男"} = {name:"张三",age:22};
console.log(name,age,gender);

此种为变量设置默认值的方法,常应用于函数参数中,加入调用函数时没传递参数,有可能会对函数运行造成错误,那就可以在形参位置进行对象解构,对变量指定默认值,如下代码所示:

function fn({name='李四',age=30}={}){
	console.log(name,age);
}
fn()

2.解构数组

解构数组和对象有些不同,解构对象的时候属性前后位置不影响,但是结构数组,需要按照索引顺序结构。

1)数组基础解构用法

如果在没有解构之前,需要拿到数组中的前3位字符串,那么只能按照下面这种按照索引值的方式定义变量,如下所示:

let arr = ["HTML5","JavaScript","Vue","React","NodeJS"];
let str1 = arr[0];
let str2 = arr[1];
let str3 = arr[2];
console.log(str1,str2,str3);

// HTML5 JavaScript Vue

如果使用解构赋值的话,就可以展现位如下格式:

let [str1,str2,str3] = ["HTML5","JavaScript","Vue","React","NodeJS"];
console.log(str1,str2,str3);

基于这种特性,如果一次性想要定义多个变量,就可以使用这种解构的方式定义,相当于一次性定义了三个变量并对变量进行了赋值。

2)选择解构

数组的特性是按照索引值顺序执行的,如果只要取得数组最后几位,或者第几位,需要预留出其他值的位置,如下所示:

let [ , , , value1 ,value2] = ["HTML5","JavaScript","Vue","React","NodeJS"];
console.log(value1,value2);

// React NodeJS

3)扩展运算符

在一个数组中解构,可以取得数组第一位,剩下的通过扩展运算符(展开运算符),统一放置到一个数组中,如下所示:

let [value,...other] = ["HTML5","JavaScript","Vue","React","NodeJS"];
console.log(value,other);

// HTML5 ["JavaScript","Vue","React","NodeJS"]

4)默认值

同上面对象别名方式一致。

let [v1,v2,v3="Vue"] = ["HTML5","JavaScript"];
console.log(v1,v2,v3);

// HTML5 JavaScript Vue

5)交换变量值

let name1 = "张三";
let name2 = "李四";
[name2,name1] = [name1,name2];
console.log(name1,name2);

3.解构混用

在实际开发中基本没有上面那种简单的结构,大多数都是数据结构比较复杂,用好了解构赋值才会让你的代码看起来更加整洁。
通过下面的示例演示一下混用解构的方法,以如下对象为例,想要获取代表作品works字段下面音乐作品music下的“鸡你太美”,应该如何操作:

let person = {
	name:"坤坤",
	age:25,
	like:['唱','跳','rap','篮球'],
	works:{music:['Wait Wait Wait','鸡你太美'],movies:['童话二分之一','鬼畜区常青树']},
	friend:['丞丞','大宝贝','大黑牛']
}

1)传统型

let result = person.works.music[1]
console.log(result);

// 鸡你太美

2)浅层解构

let {works} =person
console.log(works.music[1]);

3)连续解构

let {works:{music}} =person
console.log(music[1]);

4)数组与对象混用

let {works:{music:[,result]}} =person
console.log(result);

5)解构+别名

let {works:{music:[,result],movies:newMov}} =person
console.log(result,newMov);

作者:咸虾米,如果对内容有更好的建议或者优化方案,请评论留言。文章来源地址https://www.toymoban.com/news/detail-775485.html

到了这里,关于ES实用的深度解构赋值方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【ES6】—解构赋值

    解构赋值:解构赋值就是一种模式的匹配,只要等号两边的模式完全相同的,那么左边的变量就会被赋值对应右边的值 PS:数组解构赋值时,是通过索引的唯一性赋值的 (1). ES5 的写法 (2). ES6 的写法 ES6的写法 当左右两边的结构模式不匹配时,按照左边变量对应索引的位置赋值

    2024年02月12日
    浏览(30)
  • ES6: 解构赋值

    解构赋值是一种快速为变量赋值的简洁语法,本质上仍然是为变量赋值,分为数组解构、对象解构两大类型。 数组解构是将数组的单元值快速批量赋值给一系列变量的简洁语法,如下代码所示: 数组解构赋值: eg1: eg2: eg3: eg4: eg5: 交换2个变量的值 总结: 赋值运算符 = 左侧的

    2024年02月09日
    浏览(46)
  • [ES6]解构与赋值

    解构赋值是对赋值运算符的扩展。 通过解构,可以更加简单的获取复杂对象的属性 解构的源,解构赋值表达式的右边部分 解构的目标,解构赋值表达式的左边部分 当变量名称与对象中的属性名称一致时,可简写 {attr} 使用解构方式获取对象参数中的对应属性,这样在函数内部

    2023年04月22日
    浏览(35)
  • ES6 全详解 let 、 const 、解构赋值、剩余运算符、函数默认参数、扩展运算符、箭头函数、新增方法,promise、Set、class等等

    ​ ECMAScript 6.0,简称 ES6,是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言 要讲清楚这个问题,需要回顾历史。1996 年 11 月,JavaScript 的创造者 Netscape 公司,决定将 JavaSc

    2024年04月15日
    浏览(38)
  • ES6之 变量的解构赋值 ➕ 扩展运算符(…)

    一看就懂,代码如下: 效果如下: 如下: 如下: 什么是扩展运算符(…运算符)? 就是展开语法 (Spread syntax), 可以在函数调用/数组构造时,将数组表达式或者 string 在语法层面展开;还可以在构造字面量对象时,将对象表达式按 key-value 的方式展开。(译者注: 字面量一般指

    2024年02月09日
    浏览(34)
  • 一个常见的 JavaScript 解构陷阱

    在日常的 JavaScript 编码中,我们经常使用解构语法来提取对象中的属性。假设我们有一个名为 fetchResult 的对象,代表从接口返回的数据,其中包含一个字段名为 data 。 在提取 data 字段时,为了避免接口未返回该字段而导致的问题,我们常常会使用解构语法,并给予该字段一

    2024年02月05日
    浏览(35)
  • JavaScript编程技巧:将异步方法转换为同步执行的实用方法

    当在JavaScript中处理异步操作时,我们通常会使用 async/await 来简化异步代码的编写和理解。然而,有时候我们可能需要将异步方法转换为同步执行的方法,以满足特定的需求。在本篇博客中,我们将详细讨论如何将异步方法转换为同步执行的方法。 异步方法的主要特点是非阻

    2024年02月08日
    浏览(32)
  • 【JavaScript】数组方法 (ES6)

    arr.find(callback) 用于获取第 1 个符合要求的元素: callback : (item, index, arr) = boolean item -当前值、 index -当前索引、 arr -当前数组 返回值: callback 第一次返回 true 的对应 item ;如果没有符合的元素,则返回 undefined arr.findIndex(callback) 用于获取第 1 个符合要求的元素的下标: cal

    2024年02月14日
    浏览(44)
  • 【JavaScript】JavaScript 运算符 ⑤ ( 赋值运算符 | 基础赋值运算符 与 复合赋值运算符 )

    JavaScript 赋值运算符种类 : 基础赋值运算符 : 等于 : = ; 复合赋值运算符 : 加等 : += 减等 : -= 乘等 : *= 除等 : /= 取模等 : %= 有符号左移等 : = 有符号右移等 : = 无符号左移等 : = 无符号右移等 : = 在 JavaScript 语言中 , \\\" 赋值运算符 \\\" 的 作用是 为 变量 分配值 ; 最基础的 \\\" 赋值运算

    2024年03月25日
    浏览(45)
  • 【ES6】JavaScript 中的数组方法reduce

    reduce() 是一个 JavaScript 中的数组方法,它会对数组的每个元素执行一个提供的 reducer 函数,将其减少到一个单一的值。 这是 reduce() 的基本用法: 这里: callback 是一个用于每个数组元素的函数,接受四个参数: accumulator:累加器累加回调的返回值。它是上一次调用回调时返回

    2024年02月10日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包