代码中常见的一些可以优化的写法

代码中常见的一些可以优化的写法

取值赋值

项目中常见的做法

const obj = {
    a:1,
    b:2,
    c:3,
    d:4,
    e:5,
}
const obj2 = {}
const obj2.a = obj.a;
const obj2.b = obj.b;
const obj2.c = obj.c;
//有时候我们要取值的变量名不是我们想要的变量名
const obj2.d1 = obj.d;

其实可以这样做

const {a,b,c,d:d1} = obj;
const obj2 = {a,b,c,d1}

条件判断

项目中常见的做法

if(a == undefined) a = 0;
    
if(params.success){
       params.success(res);
}

if(
    type == 1 ||
    type == 2 ||
    type == 3 ||
    type == 4 ||
){
  //todo
}

其实可以这样做

a = a || 0;

params.success && params.success(res)

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

递归

项目中常见的做法

function factorial(n) {
  if (n === 1) return 1;
  return n * factorial(n - 1);
}

factorial(5) // 120
// 这种写法的复杂度为 O(n) 
// factorial(5)=>5*factorial(4)=>5*4*factorial(3)=>5*4*3factorial(2)=>5*4*3*2factorial(1)=>5*4*3*2*1=>120

其实可以改进为尾递归

//函数调用自身,称为递归。如果尾调用自身,就称为尾递归。
function factorial(n, total) {
  if (n === 1) return total;
  return factorial(n - 1, n * total);
}

factorial(5, 1) // 120
// 这种写法的复杂度为 O(1) 
// factorial(5,1)=>factorial(4,5)=>factorial(3,20)=>factorial(2,60)=>factorial(1,120)=>120

从数组中过滤出虚假值

项目中常见的做法

      for (let i = 0; i < arr.length; i++) {
        if(arr[i] == 0 || arr[i] == "" || arr[i] == undefined)
        //todo
      }

其实可以这样做

//0,undefined,null,false,"",''可以很容易地通过以下方法省略
const array = [3, 0, 6, 7, '', false];
const newArr = array.filter(Boolean);
// 输出
newArr  [3, 6, 7]

合并对象

项目中常见的做法

let a = {
	a:1,
	b:2,
	c:3
}
let b = {
	a:1,
	b:3,
	c:5
}
a.b = b.b
a.c = b.c

其实可以这样做

a = {...a,...b}

数组转对象

项目中场景的做法

var a = ['a','b','c']
var obj = {}
a.forEach((item,index)=>{obj[index] = item})

其实可以这样做

let obj = {...a}

暂时就这么多吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值