JavaScript 巧学巧用
前言
由于工作和生活上的一些变化,最近写文章的频率有点下降了,实在不好意思,不过相信不久就会慢慢恢复过来,感谢大家一直以来的关注和支持。
本文主要给大家分享一下在编写JavaScript代码的时候存在的一些方法和技巧,虽然有时候条条大路都通向罗马,但是也许总会有那么一条最短的路径可走。希望通过以下几点JavaScript技巧让大家的代码“化繁为简,化简为精”。
巧学巧用
1.newSet()
可能有人知道ES6中提供了新的数据结构Set,但是能够灵活运用的人或许不多。利用Set数据结构我们能够轻松的去重一个数组,比如:
letarr=[1,2,2,3]; letset=newSet(arr); letnewArr=Array.from(set);//Array.from方法可以将Set结构转为数组。 console.log(newArr);//[1,2,3]
2.Object.assign()
Object.assign()也是ES6中提供的对象的扩展方法,其可以用于对象的合并拷贝,比如:
letobj1={a:1}; letobj2={b:2}; letobj3=Object.assign({},obj1,obj2); console.log(obj3);//{a:1,b:2}
3.map()
map方法用于遍历数组,有返回值,可以对数组的每一项进行操作并生成一个新的数组,有些时候可以代替for和forEach循环,简化代码,比如:
letarr3=[1,2,3,4,5]; letnewArr3=arr3.map((e,i)=>e*10);//给数组每一项乘以10 console.log(newArr3);//[10,20,30,40,50]
4.filter()
filter方法同样用于遍历数组,顾名思义,就是过滤数组,在每一项元素后面触发一个回调函数,通过判断,保留或移除当前项,最后返回一个新的数组,比如:
letarr4=[1,2,3,4,5]; letnewArr4=arr4.filter((e,i)=>e%2===0);//取模,过滤余数不为0的数 console.log(newArr4);//[2,4]
5.some()
some方法用于遍历数组,在每一项元素后面触发一个回调函数,只要一个满足条件就返回true,否则返回false,类似于||比较,比如:
letarr5=[{result:true},{result:false}]; letnewArr5=arr5.some((e,i)=>e.result);//只要一个为true,即为true console.log(newArr5);//true
6.every()
every方法用于遍历数组,在每一项元素后面触发一个回调函数,只要一个不满足条件就返回false,否则返回true,类似于&&比较,比如:
letarr6=[{result:true},{result:false}]; letnewArr6=arr6.every((e,i)=>e.result);//只要一个为false,即为false console.log(newArr6);//false
7.~~运算符
~符号用在JavaScript中有按位取反的作用,~~即是取反两次,而位运算的操作值要求是整数,其结果也是整数,所以经过位运算的都会自动变成整数,可以巧妙的去掉小数部分,类似于parseInt,比如:
leta=1.23; letb=-1.23; console.log(~~a);//1 console.log(~~b);//-1
8.||运算符
巧妙的使用||运算符我们可以给变量设置默认值,比如:
letc=1; letd=c||2;//如果c的值为true则取存在的值,否则为2 console.log(d);//1
9....运算符
...运算符是ES6中用于解构数组的方法,可以用于快速获取数组的参数,比如:
let[num1,...nums]=[1,2,3]; console.log(num1);//1 console.log(nums);//[2,3]
10.三元运算符
该运算符应该大家都比较熟悉,在默写情况下可以简化ifelse的写法,比如:
lete=true, f=''; if(e){ f='man'; }else{ f='woman'; } //等同于 e?f='man':f='woman';
结语
本文只列出了JavaScript语法中比较常见的10点提升编码效率的方法进行了简单地阐述,当然每一个知识点都可以进行相应的展开与探究,希望大家在巧学的同时达到巧用的效果。