使用es6的方法,让代码更整洁

简介: 使用es6的方法,让代码更整洁

不接受杠精,这里暂时将es5之后的统称为es6,感谢理解

1.对象取值

恕我直言,2022了,还有人不用解构赋值的吗?

    let obj = {
        a:1,
        b:2,
        c:3,
        d:4,
        e:5,
    }

    const a = obj.a;
    const b = obj.b;
    const c = obj.c;
    const d = obj.d;
    const e = obj.e;

一行代码的事,再多就不值得了

改进

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

当然,有些人说obj中的key不规范,我不想要,我需要修改key值,可以的啊

改进

const {a:testA,b:testB} = obj;
console.log("testA",testA);// 1
console.log("testB",testB);// 2 
//const {partA:partB} = obj 将obj.partA的值赋予partB,不会影响obj的属性

当然,解构赋值虽好,但如果对象为undefined或null,则报错,因为,链式结构不存在

2. if判断条件

很多时候,有人会在if的判断条件中进行多取值判断
如下所示:

let type = 3;

if (type === 1 || type === 2 || type === 3) {

//...
} else {
//...
}

使用es6种的includes方法,不就轻松愉快了吗?

改进

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

3. 数组扁平化

获取所有班级的成员id,json格式如下

    const list = {
        "一班":[1,2,3],
        "二班":[4,5],
        "三班":[6]
    }
    let students = [];
    for (let item in list){
        const value = list[item];
        if(Array.isArray(value)){
            students = [...students,...value];
        }
    }
    console.log("students",students)

首先,获取对象全部属性不需要遍历,Object.values轻松解决,其次,数据的扁平化处理,es6有flat方法来处理,这个方法,可以无视被扁平化的数组的维度,直接获取数组所有的值,同时,也将移除空项

改进

    const list = {
        "一班":[1,2,3],
        "二班":[4,5],
        "三班":[6]
    }
    let students = Object.values(list).flat(Infinity);//[ 1, 2, 3, 4, 5, 6 ]

flat()方法,可以获取数组指定层数内的所有元素,并输出为新的数组
语法如下:

    let newArray = arr.flat(depth)
    参数:depth 可选,指定要提取嵌套数组的结构深度,默认值为 1,一般为数字,也可使用Infinity,提取所有的层级的元素

    let arr = [1,2,[3,4,[5,6]],7];

    let arr = [1,2,[3,4,[5,6,[8]]],7];
    let arr1 = arr.flat(1);
    console.log("arr1",arr1) //    let arr = [1,2,[3,4,[5,6,[8]]],7];

    let arr2 = arr.flat(2);
    console.log("arr2",arr2) // [1, 2, 3, 4, 5, 6,[ 8 ], 7]

    let arrAll = arr.flat(Infinity);
    console.log("arrAll",arrAll) //[1, 2, 3, 4,5, 6, 8, 7]

flat缺点是:不支持IE浏览器

4.合并数据

两个数组/对象合并为一个

const a = [1, 2, 3];
const b = [1, 5, 6];
const c = a.concat(b);//[1,2,3,1,5,6]
console.log("c", c)
const obj1 = {
a: 1,
}
const obj2 = {
b: 1,
}
const obj = Object.assign({}, obj1, obj2);//{a:1,b:1}
console.log("obj", obj)

改进

使用es6的 new Set()对象合并数组(同时还能达到去重效果)
使用es6的...运算符,合并对象

    const a = [1,2,3];
    const b = [1,5,6];
    const c = [...new Set([...a,...b])];//[1,2,3,5,6]
    console.log("c", c)

    const obj1 = {
        a:1,
    }
    const obj2 = {
        b:1,
    }
    const obj = {...obj1,...obj2};//{a:1,b:1}
    console.log("obj", obj)

5. 字符串拼接模版

字符串模版拼接数据,灵活使用,有些人只在使用基本功能

    const name = 'lock';
    const merits = "A";
    let result = '';
    if(merits === "A"){
        result = `${name}提升等级`;
    }else{
        result = `${name}优化处理`;
    }
    console.log("result",result)

改进

es6的${},是可以放入任何javaScript表达式的,可以进行计算或对象属性引用

    const name = 'lock';
    const merits = "A";
    const result = `${name}${merits === "A" ?'提升等级':'优化处理'}`;
    console.log("result",result)

6.参数非空判断

我相信,很多人还在使用下述方法判断参数非空

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

改进

es6有一个新的运算符,null判断运算符,??
它的行为类似||,但是只有运算符左侧的值为null或undefined时,才会返回右侧的值;

if((value??'') !== ''){
  //...
}
目录
相关文章
|
7月前
|
前端开发 Java 测试技术
使用整洁架构优化你的 Gradle Module
使用整洁架构优化你的 Gradle Module
75 0
|
2月前
|
自然语言处理 JavaScript
转换 ES6 代码时,需要注意哪些代码结构上的调整
在转换ES6代码时,需关注语法结构调整,如将let、const替换为var,箭头函数改写为传统函数表达式,解构赋值转为常规赋值,模板字符串改为字符串拼接,import/export模块化语句调整为CommonJS的require/module.exports形式。
|
5月前
|
缓存 数据库连接 API
Python模块如何影响代码的可读性?
【7月更文挑战第15天】Python模块如何影响代码的可读性?
39 3
|
6月前
|
JSON JavaScript 前端开发
更好的 JS 代码该怎么编写 一文讲明白
Javascript 是浏览器可以理解的语言,它用于加载动态内容而无需刷新页面。今天列举一些用用更少的代码又更具可读性方式来编写 JS
48 3
|
7月前
|
JavaScript
细讲Node.js模块化,以及 CommonJS 标准语法导出和导入,详细简单易懂!
细讲Node.js模块化,以及 CommonJS 标准语法导出和导入,详细简单易懂!
|
7月前
|
XML SQL 自然语言处理
JDK 21中的字符串模板:提升代码可读性与维护性的新利器
本文将介绍JDK 21中引入的字符串模板特性,它是一种创新的文本生成技术,旨在提高代码的可读性和维护性。字符串模板允许开发者使用简洁的语法来构建复杂的字符串,减少了硬编码和字符串拼接的工作量。本文将详细阐述字符串模板的语法、使用场景以及与传统字符串处理方法的比较,并通过示例代码展示其在实际开发中的应用。
|
7月前
|
前端开发 JavaScript 安全
对象属性值的黑魔法:ES8的简化语法让你的代码更简洁
对象属性值的黑魔法:ES8的简化语法让你的代码更简洁
|
编解码 JavaScript 前端开发
ES6 模块化编程 详解
ES6新特性 模块化编程详解。
122 0
|
前端开发
前端学习案例4:ES6中的修饰器4
前端学习案例4:ES6中的修饰器4
68 0
前端学习案例4:ES6中的修饰器4
|
前端开发
前端学习案例2:ES6中的修饰器2
前端学习案例2:ES6中的修饰器2
72 0
前端学习案例2:ES6中的修饰器2