• es6---如何在项目中和平时练习中应用es6语法


    一、关于取值

    1. const obj = {
    2. a:1,
    3. b:2,
    4. c:3,
    5. d:4,
    6. e:5,
    7. }
    8. const a = obj.a;
    9. const b = obj.b;
    10. const c = obj.c;
    11. const d = obj.d;
    12. const e = obj.e;

    es6解构赋值

    const {a,b,c,d,e} = obj;

    也可以使用:进行重命名

    1. const {a:a1} = obj;
    2. console.log(a1)

    二、数组和对象的合并

    1. const a = [1,2,3];
    2. const b = [1,5,6];
    3. const c = a.concat(b);//[1,2,3,1,5,6]
    4. const obj1 = {
    5. a:1,
    6. }
    7. const obj2 = {
    8. b:1,
    9. }
    10. const obj = Object.assign({}, obj1, obj2);//{a:1,b:1}

    es6的扩展运算符,数组的合去重

    1. const a = [1,2,3];
    2. const b = [1,5,6];
    3. const c = [...new Set([...a,...b])];//[1,2,3,5,6]
    4. const obj1 = {
    5. a:1,
    6. }
    7. const obj2 = {
    8. b:1,
    9. }
    10. const obj = {...obj1,...obj2};//{a:1,b:1}

    三、字符串拼接

    1. const name = '小明';
    2. const score = 59;
    3. let result = '';
    4. if(score > 60){
    5. result = `${name}的考试成绩及格`;
    6. }else{
    7. result = `${name}的考试成绩不及格`;
    8. }

    es6模板字符串

    ${}中可以放入任意的JavaScript表达式,可以进行运算,以及引用对象属性。

    1. const name = '小明';
    2. const score = 59;
    3. const result = `${name}${score > 60?'的考试成绩及格':'的考试成绩不及格'}`;

    四、if条件多

    1. if(
    2. type == 1 ||
    3. type == 2 ||
    4. type == 3 ||
    5. type == 4 ||
    6. ){
    7. //...
    8. }

    es6数组方法includes

    1. const condition = [1,2,3,4];
    2. if( condition.includes(type) ){
    3. //...
    4. }

    五、精确搜索

    1. const a = [1,2,3,4,5];
    2. const result = a.filter(
    3. item =>{
    4. return item === 3
    5. }
    6. )

    es6数组find方法,性能优化,find方法中找到符合条件的项,就不会继续遍历数组。

    1. const a = [1,2,3,4,5];
    2. const result = a.find(
    3. item =>{
    4. return item === 3
    5. }
    6. )

    六、获取对象属性值

    const name = obj && obj.name;

    es6可选链?

    const name = obj?.name;

    可选链?补充:

    会在尝试访问obj.name之前确定obj既不是null也不是undefined,如果obj是null或者undefined表达式会进行短路计算直接返回undefined

    七、输入框非空判断

    1. if(value !== null && value !== undefined && value !== ''){
    2. //...
    3. }

    es6空位合并运算符??

    1. if((value??'') !== ''){
    2. //...
    3. }

    es6空位合并运算符??补充:

    前值是null或者undefined时表达式返回后值

    1. const a = 0 ?? '默认值a';
    2. cosnt b = null ?? '默认值b';
    3. console.log(a); // "0" 0是假值,但不是 null 或者 undefined
    4. console.log(b); // "默认值b"

    拓展:

    变量赋默认值一般使用逻辑或操作符 || 。但是由于 || 是一个布尔逻辑运算符,左侧的操作数会被强制转换成布尔值用于求值。任何假值(0, '', NaN, null, undefined)都不会被返回。这导致如果你使用0''NaN作为有效值,就会出现不可预料的后果。这也是 ?? 操作符可以解决这个问题

    1. const a = 0
    2. const b = a || 5
    3. //0作为有效值,与我们期望的 b 的值不一致
    4. console.log(b); // 5

    八、异步函数回调

    1. const fn1 = () =>{
    2. return new Promise((resolve, reject) => {
    3. setTimeout(() => {
    4. resolve(1);
    5. }, 300);
    6. });
    7. }
    8. const fn2 = () =>{
    9. return new Promise((resolve, reject) => {
    10. setTimeout(() => {
    11. resolve(2);
    12. }, 600);
    13. });
    14. }
    15. const fn = () =>{
    16. fn1().then(res1 =>{
    17. console.log(res1);// 1
    18. fn2().then(res2 =>{
    19. console.log(res2)
    20. })
    21. })
    22. }

    es6的async和await

    1. const fn = async () =>{
    2. const res1 = await fn1();
    3. const res2 = await fn2();
    4. console.log(res1);// 1
    5. console.log(res2);// 2
    6. }

    九、函数默认参数

    1. function fn (name, age) {
    2. let name = name || 'hsq'
    3. let age = age || 22
    4. console.log(name, age)
    5. }
    6. fn() // hsq 22

    es6函数默认参数

    1. function fn (name = 'hsq', age = 22) {
    2. console.log(name, age)
    3. }
    4. fn() // hsq 22
    5. fn('test', 23) // test 23

    十、剩余参数

    一个函数,传入参数的个数是不确定的,这就可以用ES6的剩余参数

    1. function fn (name, ...params) {
    2. console.log(name)
    3. console.log(params)
    4. }
    5. fn ('hsq', 1, 2) // hsq [ 1, 2 ]
    6. fn ('hsq', 1, 2, 3, 4, 5) // hsq [ 1, 2, 3, 4, 5 ]

    十 一、箭头函数

    普通函数

    1. function fn () {}
    2. const fn = function () {}

    es6箭头函数

    1. const fn = () => {}
    2. // 如果只有一个参数,可以省略括号
    3. const fn = name => {}
    4. // 如果函数体里只有一句return
    5. const fn = name => {
    6. return 2 * name
    7. }
    8. // 可简写为
    9. const fn = name => 2 * name
    10. // 如果返回的是对象
    11. const fn = name => ({ name: name })

    普通函数和箭头函数的区别: 

    • 1、箭头函数不可作为构造函数,不能使用new
    • 2、箭头函数没有原型对象
    • 3、箭头函数没有自己的this
    • 4、箭头函数没有arguments对象

     

    十二、获取对象的键值

    Object.keys

    可以用来获取对象的key的集合

    1. const obj = {
    2. name: 'hsq',
    3. age: 22,
    4. gender: '男'
    5. }
    6. const values = Object.keys(obj)
    7. console.log(values) // [ 'hsq', 22, '男' ]

     

    Object.values

    可以用来获取对象的value的集合

    1. const obj = {
    2. name: 'hsq',
    3. age: 22,
    4. gender: '男'
    5. }
    6. const values = Object.values(obj)
    7. console.log(values) // [ 'hsq', 22, '男' ]

     

    Object.entries

    可以用来获取对象的键值对集合

    1. const obj = {
    2. name: 'hsq',
    3. age: 22,
    4. gender: '男'
    5. }
    6. const entries = Object.entries(obj)
    7. console.log(entries)
    8. // [ [ 'name', 'hsq' ], [ 'age', 22 ], [ 'gender', '男' ] ]

    十三、数组扁平化

    Array.flat

    有一个二维数组,我想让他变成一维数组:

    1. const arr = [1, 2, 3, [4, 5, 6]]
    2. console.log(arr.flat()) // [ 1, 2, 3, 4, 5, 6 ]

    还可以传参数,参数为降维的次数

    1. const arr = [1, 2, 3, [4, 5, 6, [7, 8, 9]]]
    2. console.log(arr.flat(2))
    3. [
    4. 1, 2, 3, 4, 5,
    5. 6, 7, 8, 9
    6. ]

    如果传的是一个无限大的数字,那么就实现了多维数组(无论几维)降为一维数组

    1. const arr = [1, 2, 3, [4, 5, 6, [7, 8, 9, [10, 11, 12]]]]
    2. console.log(arr.flat(Infinity))
    3. [
    4. 1, 2, 3, 4, 5,
    5. 6, 7, 8, 9, 10,
    6. 11, 12
    7. ]

  • 相关阅读:
    1824. 最少侧跳次数-动态规划算法实现
    springboot Socket 通信
    以创新抵御经济环境压力:自动化测试ReadyAPI帮助企业平衡软件质量与成本控制
    MySQL——DBCP和C3P0连接池
    Vue+WebSocket-实现多人聊天室
    javaweb03-js基础
    【python海洋专题二十二】在海图上text
    设计模式-单一职责原则
    【前端学习笔记】VitePress 项目构建 以及 基础使用汇总(config.js、themeConfig、frontmatter 块、预定义变量)
    Java 操作 Excel:生成数据、设置单元格样式、设置数据有效性(hutool)
  • 原文地址:https://blog.csdn.net/h18377528386/article/details/127696894