代码中常见的一些可以优化的写法
取值赋值
项目中常见的做法
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}
暂时就这么多吧