首页 > 其他分享 >关于JS解构数据结构的表现形式

关于JS解构数据结构的表现形式

时间:2024-09-15 08:53:01浏览次数:11  
标签:输出 console log JS 解构 let 数据结构 type

对数组或对象类数据结构,尤其是复杂的JOSN数据结构,要从中取出想要的个别数据,往往会采用遍历方法进行,即麻烦又增加了运行时间。从ES6开始,JS增加了解构进行简化,本质上是打散复杂的数据结构,将其折分为更小的部分(复制出的小结构),从而使用数据更为方便快捷。

一、对象解构

1.单层对象解构

let node={ //单层对象数据结构

       type:"学生",

       name:"张小玉",

}

let {type,name}=node;//进行单层对象解构,{变量名,变量名}中的变量名要与对象中的对应,从而将原node.type的使用进行了简化

console.log(type);//输出结果:学生

console.log(name);//输出结果:张小玉

2.选择性对象解构

let node={ //单层对象数据结构

       id:1,

       number:0325,

       type:"学生",

       name:"张小玉",

       sex:"女",

       address:"四海市"

}

let {type,name}=node;//只要变量名能对上,不管数量和顺序

console.log(type);//输出结果:学生

console.log(name);//输出结果:张小玉

3.单层对象解构赋值

let node={ //单层对象数据结构

       type:"学生",

       name:"张小玉"

};

let type="老师",name="孙小小";//先定义的已赋值的变量

({type,name}=node);//对已存在的变量进行解构赋值,覆盖了原赋值,表达式必须要用小括号包起

console.log(type);//输出结果:学生

console.log(name);//输出结果:张小玉

4.对象解构中的参数默认值

let node={ //单层对象数据结构

       type:"学生",

       name:"张小玉"

};

let {type,name="XXX",value=true}=node;//对解构中参数设置默认值

console.log(type);//输出结果:学生

console.log(name);//输出结果:张小玉,如果对象数据中没有找到name,则输出为XXX

console.log(value);//输出结果:true

5.给解构变量改名

let node={ //单层对象数据结构

       type:"学生",

       name:"张小玉"

};

let {type:localType,name:localName}=node;//相当于将type变量改名为localType

console.log(localType);//输出结果:学生

console.log(localName);//输出结果:张小玉

console.log(type);//无输出结果,表示解构中没有type这个变量

6.多层嵌套对象解构

let node={//多层对象数据结构

       type:"学生",

       name:"张小玉",

       loc:{

              start:{

                     line:1,

                     column:2

              },

              end:{

                     line:2,

                     column:4

              }

       }

};

let {loc:{start}}=node;//选择性的定义嵌套对象解构体(复制),从而将遍历才能取得个别数据方法大大简化

console.log(start.line);//输出结果:1

console.log(start.column);//输出结果:2

二、数组解构

1.单层数组解构

let colors=["red","green","blue"];   //单层数组结构

let [firstColor,seconColor]=colors;  //进行数组解构,将对应序号的值复制到对应序号变量上

console.log(firstColor);//输出结果:red

console.log(seconColor);//输出结果:green

2.选择性数组解构

let colors=["red","green","blue"];//单层数组结构

let [,,thirdColor]=colors;//选择性数组解构,将不需要的序号处用占位符逗号表示

console.log(thirdColor);//输出结果:blue

3.单层数组解构赋值

let colors=["red","green","blue"];//单层数组结构

let firstColor="black",secondColor="purple";//先定义的已赋值的变量

[firstColor,secondColor]=colors;//对已存在的变量进行解构赋值,覆盖了原赋值

console.log(firstColor);//输出结果:red

console.log(secondColor);//输出结果:green

4.单层数组解构赋值的一个特例应用

//在ES5中交换变量,需要通过一个中间临时变量进行转存

let a=1,b=2,tmp;

tmp=a;a=b;b=tmp;

console.log(a);//输出结果:2

console.log(b);//输出结果:1

//在ES6中交换变更,使用数据解构赋值,不需要中间变量了

let a=1,b=2;

[a,b]=[b,a];

console.log(a);//输出结果:2

console.log(b);//输出结果:1

5.数组解构参数默认值

let colors=["red"];//单层数组结构

let [firstColor,secondColor="green"]=colors;//如果在数组数据中,找不到secondColor则取默认值

console.log(firstColor);//输出结果:red

console.log(secondColor);//输出结果:green

6.多层嵌套数组解构

let colors=["red",["green","lightgreen"],"blue"];//嵌套数组结构

let [firstColor,[secondColor]]=colors;//嵌套数组解构

console.log(firstColor);//输出结果:red

console.log(secondColor);//输出结果:green

7.不定元素数组解构

let colors=["red","green","blue"];//不定元素数组结构

let [firstColor,...restColors]=colors;//定义不定元素数据解构,...restColors因为带有"..."前缀,被认定为不定元素,代表所有剩下的元素

console.log(firstColor);//输出结果:red

console.log(restColors.length);//输出结果:2

console.log(restColors[0]);//输出结果:green

console.log(restColors[1]);//输出结果:blue

三、混合解构(JOSN数据)

    let node={//JOSN对象数据结构

              type:"学生",

              name:"张小玉",

              loc:{

                     start:{

                            line:1,

                            column:2

                     },

                     end:{

                            line:2,

                            column:4

                     }

              },

              range:[0,3]

       };

    let{loc:{start},range:[startIndex]}=node;//定义混合解构

console.log(start.line);//输出结果:1

       console.log(start.column);//输出结果:2

       console.log(startIndex);//输出结果:0

四、JS解构数据结构注意事项

1.使用let进行解构时,右侧必须要有对应的已初始化了的数据结构,右侧数据不能为null或undefined,否则,程序将抛出错误。

2.在进行对象解构赋值时,表达式必须要用英文状态下的括号包起来,否则,JS会将表达式认为是一个代码块,只有加上小括号后,JS才进行赋值运算过程。

3.不定元素参数必须放到参数序列最后一个,否则将报错。

4.默认参数的使用条件是,将数据结构中无该变量属性或属性为undefinde时才生效。


标签:输出,console,log,JS,解构,let,数据结构,type
From: https://blog.csdn.net/m0_74157361/article/details/142278612

相关文章

  • 一款类excel可进行显示、在线编辑的纯js表格TableShow控件
        在进行前端显示设计时,传统的方法是以分页显示,逐条提取后修改及保存,非常不利于用户连贯阅读及在线修改。因此,本人将类似excel的一些table表格在线卷动显示、修改及集中保存功能进行了尝试,封装成了一个纯js控件,只通过一句代码进行调用,将数据库查询结果集进行显示和添......
  • JS 扩展运算符有哪些使用场景?
    你好,我是沐爸,欢迎点赞、收藏、评论和关注。扩展运算符有哪些使用场景?直接进入正题一、复制数组consta1=[1,2];//写法一consta2=[...a1];//写法二const[...a2]=a1;二、合并数组constpart1=[1,2,3];constpart2=[4,5,6];constall=[.......
  • Arcgis api 4.x 专题图制作之分级色彩,采用自然间断法;(使用simple-statistics JS数学统
    1.效果2.实现 2.1分级色彩    分级色彩是在GIS制图中,通过不同颜色等级来表示数据量级差异的符号化方法,帮助用户直观识别和比较数据的大小。 2.2分级方法     在GIS中进行分级色彩制图时,可以选择不同的分级方法来表示数据的分布和变化,常见的分......
  • 高级java每日一道面试题-2024年9月08日-前端篇-JS的执行顺序是什么样的?
    如果有遗漏,评论区告诉我进行补充面试官:JS的执行顺序是什么样的?我回答:JavaScript的执行顺序是由其特殊的执行环境所决定的。JS的执行环境包括全局执行环境、函数执行环境和eval执行环境。在这些环境中,变量和函数声明会被提升(hoisting),而变量赋值和函数调用则按照......
  • 将项目里的moment替换为day.js
    day.js有和moment.js完全一样的API,但是它的体积却比moment要小的很多,moment打包后的体积有280kb左右,而day.js打包后只有6.3KB。它非常轻量化,因为它可以利用treeShaking如果你的项目里面使用的是moment.js,而你想要把它替换成day.js,很简单,直接使用一个webpack插件即可,而无需做任何......
  • 数据结构实验第一周
    6-1差距几何排序的话复杂度要O(n),可以选择桶排序或者计数排序,我选择的是计数排序比如是32144786我开一个数组a[9](因为最大为8),然后分别对出现的数计数有a:111201110然后按顺序放回就是12344678intfun(intD[],intN){if(N<2)return0;......
  • JAVA进阶-set,Comparable排序,数据结构-树
    day07-set,Comparable排序,数据结构-树泛型Set概述和特点TreeSet集合概述和特点Comparable排序自然排序Comparable的使用使用空参构造创建TreeSet集合自定义Student类实现Comparable接口重写里面的comparaTo方法自然排序简单原理图比较器排序Compara......
  • 【工具】前端JavaScript代码在线执行器 方便通过网页 手机测试js代码
    【工具】前端JavaScript代码在线执行器方便通过网页手机测试js代码自动补全js代码格式化代码色彩打印日志清空日志待补充<!DOCTYPEhtml><htmllang="zh-CN"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,ini......
  • nlohmann/json安装与使用
    介绍nlohmann/json是一个用于处理JSON数据的C++库,提供了简单而强大的JSON解析和生成功能。以其简洁易用、功能强大而受到广泛欢迎。优点简单易用:使用现代C++特性,如自动类型推断和范围for循环,简化了JSON的创建、访问和操作。与标准库兼容:它与C++标准......
  • TDengine 建模实战:手把手教你高效设计数据结构
    ✨作为一款高效简洁的大数据平台,TDengine的使用体验极为极为流畅,用户可以轻松实现数据的实时采集、存储与分析,快速获取所需的信息和洞察。但在追求最佳实践的过程中,我们仍需关注一些关键问题。例如,多个设备是否应该向同一个子表写入数据?在数据列过滤查询与基于标签的过滤查询之间,......