JS进阶-解构赋值(一)

扩展:解构赋值时Js特有的一种处理数据的方式,在Java中没有处理数据的方式

知识引入:

 思考:在js中,在没有学习解构赋值之前,我们是如何获取数组的内容的?

JS进阶-解构赋值(一)_第1张图片

以上要么不好记忆,要么书写麻烦,此时可以使用解构赋值的方法让代码更简洁

JS进阶-解构赋值(一)_第2张图片

解构赋值是一种快速为变量赋值的简洁语法,本质上仍然是为变量赋值。

在前端开发中使用

分为:

  • 数组解构 
  • 对象解构

• 数组解构

数组解构是将数组的单元值快速批量赋值给一系列变量的简洁语法。

 基本语法:

1. 赋值运算符 = 左侧的 [] 用于批量声明变量,右侧数组的单元值将被赋值给左侧的变量

2. 变量的顺序对应数组单元值的位置依次进行赋值操作

JS进阶-解构赋值(一)_第3张图片

1.典型应用交互2个变量

JS进阶-解构赋值(一)_第4张图片

js 前面必须加分号情(小知识)

1. 立即执行函数

JS进阶-解构赋值(一)_第5张图片

2. 数组解构

JS进阶-解构赋值(一)_第6张图片 

JS进阶-解构赋值(一)_第7张图片 

2. 变量多 单元值少的情况: 

JS进阶-解构赋值(一)_第8张图片

变量的数量大于单元值数量时,多余的变量将被赋值为 undefined

3.变量少 单元值多的情况:

JS进阶-解构赋值(一)_第9张图片

4. 利用剩余参数解决变量少 单元值多的情况: 

JS进阶-解构赋值(一)_第10张图片

剩余参数返回的还是一个数组 

5. 防止有undefined传递单元值的情况,可以设置默认值:

JS进阶-解构赋值(一)_第11张图片

允许初始化变量的默认值,且只有单元值为 undefined 时默认值才会生效 

6. 按需导入,忽略某些返回值:

JS进阶-解构赋值(一)_第12张图片

7. 支持多维数组的结构: 

JS进阶-解构赋值(一)_第13张图片

1. 变量的数量大于单元值数量时,多余的变量将被赋值为? 

  • undefined

2. 变量的数量小于单元值数量时,可以通过什么剩余获取所有的值?

  • 剩余参数... 获取剩余单元值,但只能置于最末位

• 对象解构

对象解构是将对象属性和方法快速批量赋值给一系列变量的简洁语法

1.基本语法:

1. 赋值运算符 = 左侧的 {} 用于批量声明变量,右侧对象的属性值将被赋值给左侧的变量

2. 对象属性的值将被赋值给与属性名相同的变量

3. 注意解构的变量名不要和外面的变量名冲突否则报错

4.对象中找不到与变量名一致的属性时变量值为 undefined

JS进阶-解构赋值(一)_第14张图片

2.给新的变量名赋值: 

可以从一个对象中提取变量并同时修改新的变量名

JS进阶-解构赋值(一)_第15张图片

冒号表示“什么值:赋值给谁” 

3. 数组对象解构

JS进阶-解构赋值(一)_第16张图片

4. 多级对象解构(常用)

JS进阶-解构赋值(一)_第17张图片

JS进阶-解构赋值(一)_第18张图片

 

JS进阶-解构赋值(一)_第19张图片 

遍历数组的新方法

1.遍历数组 forEach 方法(重点)

  • forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数
  • 主要使用场景: 遍历数组的每个元素
  • 该方法主要用于遍历处理数组数据没有返回值
  • 语法:

JS进阶-解构赋值(一)_第20张图片

  • 例如: 

JS进阶-解构赋值(一)_第21张图片

 

JS进阶-解构赋值(一)_第22张图片 

2.筛选数组 filter 方法(重点)

  • filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素
  • 主要使用场景: 筛选数组符合条件的元素,并返回筛选之后元素的新数组
  • 语法:

JS进阶-解构赋值(一)_第23张图片

例: 

JS进阶-解构赋值(一)_第24张图片

  • filter() 筛选数组
  • 返回值:返回数组,包含了符合条件的所有元素。如果没有符合条件的元素则返回空数组
  • 参数:currentValue 必须写, index 可选
  • 因为返回新数组,所以不会影响原数组 

综合案例:

渲染商品列表案例

核心思路:有多少条数据,就渲染多少模块,然后 生成对应的 html结构标签, 赋值给 list标签即可
①:利用forEach 遍历数据里面的 数据
②:拿到数据,利用字符串拼接生成结构添加到页面中
③:注意:传递参数的时候,可以使用对象解构

 JS进阶-解构赋值(一)_第25张图片





  
  
  
  商品渲染
  



  

 

你可能感兴趣的:(js,javascript,开发语言,ecmascript)