使用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??'') !== ''){
  //...
}
目录
相关文章
|
2天前
|
存储 缓存 运维
如何写好代码?一个提升代码可读性的小技巧
如何提高代码的可读性,使得代码变得整洁,甚至赏心悦目。本文会从“控制流”的角度分享一下作者对提高代码可读性的一些思考。
|
2天前
|
开发者
在实际项目中,如何使用装饰器来提高代码的可读性和可维护性?
【2月更文挑战第18天】【2月更文挑战第54篇】在实际项目中,如何使用装饰器来提高代码的可读性和可维护性?
|
2天前
|
前端开发 测试技术
代码注释怎么写:让你的代码更易维护
在编程中,有一种无声的艺术,那就是代码注释。这可能看起来微不足道,但其实非常关键。它不仅有助于他人理解你的代码,也是自我表达的一种方式。
|
2天前
|
前端开发 JavaScript 安全
对象属性值的黑魔法:ES8的简化语法让你的代码更简洁
对象属性值的黑魔法:ES8的简化语法让你的代码更简洁
|
6月前
|
编解码 JavaScript 前端开发
ES6 模块化编程 详解
ES6新特性 模块化编程详解。
59 0
|
11月前
|
JavaScript 前端开发 网络架构
每天3分钟,重学ES6-ES12(四)函数的补充 展开语法
每天3分钟,重学ES6-ES12(四)函数的补充 展开语法
58 0
|
11月前
|
前端开发 JavaScript 小程序
每天3分钟,重学ES6-ES12(十七)模块化历史
每天3分钟,重学ES6-ES12(十七)模块化历史
61 0
|
前端开发 开发者
如何提高前端代码的可读性?
可读性是代码质量的重要标准之一,也是前端开发者必须重视的问题。在团队开发中,一份可读性强的代码可以提高团队协作效率,减少代码维护成本。下面我们来探讨如何提高前端代码的可读性。
124 0
|
JavaScript 前端开发
【ES6】ES6编程规范 编程风格
【ES6】ES6编程规范 编程风格