做一个“会偷懒”的前端

417 阅读4分钟

js代码简写技巧!!!

所谓的“会偷懒”不是说工作上让你偷懒,而是在代码上面怎样精简,比如说三四行代码和一行代码实现的效果是一样的,那直接一行搞定,何乐而不为呢?哈哈,这篇文章总结了一些平时开发中写js代码常遇到的应用场景,如果大家有更好的方法也可以分享~~~

1. 三目运算符

  • 当你想写if...else...可以使用三目运算符代替
let weight = 120,text
if (weight>100){
    text = '胖'
} else {
    text = '瘦'
}

简写:

let weight = 120,text
text = weight>100?'胖':'瘦'

2. 短路求值

  • &&运算符 如果操作有false 则返回false,如果所有操作数的值都是 true,将返回最后一个表达式的值
let one = 1, two = 2, three = 3;
console.log(one && two && three); // Result: 3
  • || 运算符 操作有true 就返回true ,如果所有操作数的值都是 false,将返回最后一个表达式的值
let x = 110, y;
if (0 < x < 100) {
    console.log('0~100之间');
} else if (x < 200) {
    console.log('100~200之间');
} else {
    console.log('大于或等于200');
} 
<!--简写-->
let x = 110;
let y = ((x>0 && x<100) && '0~100之间') || (x < 200 && '100~200之间') || '大于或等于200'
console.log(y)
  • 判空的情况

3. 声明变量

let a
let b
let c = 2

简写:

let a,b,c=2

4. if存在条件简写

  • 一般认为有内容或存在的(值或对象,0除外)进行判断时就是true值,而没有内容或不存在的(”“,undefined,null等等)进行判断时就是false值

    • 常见的真值有:

if(a === true){}
if(a){}

只有a是真值时,二者语句才相等

  • 常见的假值

如果判断值不是真值,则可以这样:

if(!a){}

5.数组精简技巧

1.去重

<!--第一种-->
let pigs = ['胖胖','肥肥','肉肉','肥肥']
let change = Array.from(new Set(pigs))
console.log(change) // ['胖胖','肥肥','肉肉']
<!--第二种-->
let pigs = ['胖胖','肥肥','肉肉','肥肥']
let change = [...new Set(pigs)]
console.log(change) // ['胖胖','肥肥','肉肉']

2.Array.from()

  • 从一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例,不改变原数组
let pigs = [
    {name: '肥肥', weight: 200},
    {name: '瘦瘦', weight: 100}
]
let change = Array.from(pigs,({name}) => name)
console.log(change) // ['肥肥','瘦瘦']

3.filter()方法

  • 匹配数组中符合条件的某一项
let pigs=[
{name:'肥肥',id: 1,content:'吃太多会胖'},
{name: '瘦瘦',id:2,content:'少吃会瘦'}
]
console.log(pigs.filter(item=>item.id==1)
// [{name:'肥肥',id: 1,content:'吃太多会胖'}]

4.map()方法

  • 数组中的每个元素都调用一个提供的函数后返回的结果
let pigs=[
{name:'肥肥',id: 1,content:'吃太多会胖'},
{name: '瘦瘦',id:2,content:'少吃会瘦'}
]
let new = pigs.map(item=>item.name=item.name+"66")
console.log(new) // ["肥肥66", "瘦瘦66"]
console.log(pigs) 
//[{name:'肥肥66',id: 1,content:'吃太多会胖'},{name: '瘦瘦66',id:2,content:'少吃会瘦'}]

5.扩展运算符(...)

  • 出于某种目的,需要将数组转化成对象,一个简单快速的方法是就使用展开运算符号
let pigs = [
    {name: '肥肥', weight: 200},
    {name: '瘦瘦', weight: 100}
]
console.log({...pigs}) 
//{0:{name: "肥肥",weight: 200},1:{name: '瘦瘦', weight: 100}}
  • 多个数组合并起来。
let pigs = ['肥肥','瘦瘦'],fruits = ['草莓','芒果']
let all = [...pigs,...fruits]
console.log(all) 
// ["肥肥", "瘦瘦", "草莓", "芒果"]

6.模板字符串(``)

  • 需要拼接字符串的时候尽量改成使用模板字符串,模板字符串可以使字符串的拼接更加的简洁和直观
let pig = '肥肥',name='瘦瘦'
console.log('我吃的多,所以'+name+'会叫我'+ pig) 
// "我吃的多,所以瘦瘦会叫我肥肥"
console.log(`我吃的多,所以${name}会叫我${pig}`)
// "我吃的多,所以瘦瘦会叫我肥肥"

6.解构赋值

普通赋值

let arr=[1,2,3]
let a=arr[0]
let b=arr[1]
let c=arr[2]
console.log(a,b,c)
//1,2,3

数组赋值:

let[a,b,c]=[1,2,3]
console.log(a,b,c)//1,2,3

获取对象中的值:

let {a,c,d}={a:12,c:5,d:6}
console.log(a,c,d) // 12,5,6

复杂解构

let [json,arr,num,str]=[{a:12,b:4},[2,3,6],787,'abcdes']
console.log(json,arr,num,str)
//{a:12,b:4},[2,3,6],787,'abcdes'