• JS日常开发小技巧(持续更新)


    前言

            整理总结了一些日常开发中的JS小技巧,可以简化代码,使代码看起来更加简洁明了。

    一、数组去重

            数组去重的方法有很多种,比如:for循环、双重for循环等,思路一般是生成一个新数组,然后遍历原数组,判断新数组中是的有原数组的值,如果有就跳过,没有就添加,但这样写起来代码很多,不够简洁,而且太麻烦了,下面推荐一个简单的数组去重的方法。

    1. var arr = [0,1,2,3,4,5,6,7,8,9,0,1,5,7,84,,5,6,8,4,7,4]
    2. //new Set( )生成元素唯一性的类数组对象
    3. console.log(new Set(arr));//{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 84, undefined }
    4. //...展开运算符将类数组对象展开放入数组中
    5. console.log([...new Set(arr)]);//[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 84, undefined ]

    二、数组取交集

            数组取交集,也是经常遇到的需求,思路一般也是判断这个数组里面有没有这个值,没有的话就跳过,有的话就取出来。思路是对的,但代码可能写起来比较麻烦,下面分享一个我自认为简单的数组取交集的方法。

    1. const arr1 = [1, 2, 3, 4]
    2. const arr2 = [2, 3, 4, 5]
    3. //filter过滤器返回符合条件的值生成一个新数组
    4. //includes数组方法,判断数组中是否有这个值,有的话返回true否则返回false
    5. let arr3 = arr1.filter(item => arr2.includes(item))
    6. console.log(arr3);//[2,3,4]

    三、数组取并集

            一般也能通过循环解决,但是太麻烦,下面分享一个我自认为简单的数组取并集的方法。

    1. const arr1 = [1, 2, 3, 4]
    2. const arr2 = [2, 3, 4, 5]
    3. //filter过滤器返回符合条件的值生成一个新数组
    4. //includes数组方法,判断数组中是否有这个值,有的话返回true否则返回false
    5. //concat数组方法,用于合并数组
    6. let arr3 = arr1.concat(arr2.filter(item => !arr1.includes(item)))
    7. console.log(arr3);//[2,3,4]

    四、数组中有则删除,没有则添加

            自己写的方法,可以直接拿去用,但感觉不是最简单的,后期研究下优化。大家可以推荐一些简单的办法。

    1. const arr1=[1,2,3,4]
    2. const processing = (num)=>{
    3. if(arr1.includes(num)){
    4. arr1.splice(arr1.indexOf(num),1)
    5. }else{
    6. arr1.push(num)
    7. }
    8. console.log(arr1);
    9. }
    10. processing(3)

    五、用??代替||更加严谨

            ??又被称为null判断运算符,只有当左边为undefined或null时,才取右边的值,否则则取左边的值。与||的不同在于||的话,||左边为0和false时,会取右边的值。

    1. const num = 0 || 1
    2. console.log(num);//1
    3. const num1 = 0 ?? 1
    4. console.log(num1);//0

    六、用?.替代&&和三目运算符

            ?.被称为链式运算符,只有当左边为null或undefined的时候,才会取右边的值。

       ?.直接在链式调用的时候判断,判断左侧的对象是否为nullundefined,如果是的,就不再往下运算,返回undefined,如果不是,则返回右侧的值

    1. const obj={
    2. name:'勇敢小陈'
    3. }
    4. console.log(obj&&obj.name);//勇敢小陈
    5. console.log(obj?obj:obj.name);//{ name: '勇敢小陈' }
    6. console.log(obj?.obj.name);

    七、简化if判断

            复杂的if判断不止看起来恶心,对于有代码洁癖的人来说写起来更恶心,我也不想写这么多if呀,但是没办法呀,其实办法还是有的,给大家推荐一下简化if判断的方法。通过优化后的方法,可以更加简洁易懂,而且后期更容易维护。

    1. //代码常见的if判断
    2. let title=''
    3. if(num===1){
    4. title='已完成'
    5. }
    6. if(num===2){
    7. title='未完成'
    8. }
    9. if(num===3){
    10. title='进行中'
    11. }
    12. //优化后的代码
    13. let obj={
    14. 1:'已完成',
    15. 2:'未完成',
    16. 3:'进行中'
    17. }
    18. const handle=(num)=>{
    19. return obj[num]
    20. }
    21. console.log(handle(1));

    八、通过三木简化if...else...

            对于一些if...else的判断,我们可以通过三木进行进一步的简化

    1. //简化前
    2. let title=''
    3. let identification=false
    4. if(identification){
    5. title='已完成'
    6. }else{
    7. title='未完成'
    8. }
    9. //通过三目运算符简化
    10. title=identification?'已完成':'未完成'

    2022.06.30

  • 相关阅读:
    2023 极术通讯-安谋科技发布“山海”S20F安全解决方案,持续加码智能汽车“芯”赛道
    无涯教程-JavaScript - CONVERT函数
    21天学会C++:Day8----范围for与nullptr
    org.apache.sshd的SshClient客户端 连接服务器执行命令 示例
    【day21】每日一题——MP3光标位置
    vs-debugger远程调试卡死解决
    【PRIVGUARD-privguard-artifact-main】代码学习(parser部分)
    Vue2项目练手——通用后台管理项目第四节
    Linux下SpringBoot项目部署(centos系统)
    Python Urllib:网络库(stdlib)的强大功能与灵活运用
  • 原文地址:https://blog.csdn.net/ct5211314/article/details/125524989