数组去重vararr=[1,2,3,3,4];console.log(...newSet(arr))>>[1,2,3,4]数组和布尔值有时候我们需要过滤数组中值为false的值。比如(0,undefined,null,false),你可能不知道这样的技巧varmyArray=[1,0,undefined,null,false];myArray.filter(Boolean);>>[1]//是不是很简单,只需要传入一个布尔函数即可。创建一个空对象,有时我们需要创建一个纯对象,不带任何原型链等,一般创建空对象最直接的方式是通过字面量{},但是这个对象中还是有proto属性的指向Object.prototypeetc.letdict=Object.create(null);dict.__proto__==="undefined"合并对象JavaScript中合并多个对象的需求一直是存在的,比如传递参数时,需要将表单参数和分页参数合并传给后端constpage={current:1,pageSize:10}constform={name:"",sex:""}constparams={...form,...page};/*{name:"",sex:"",current:1,pageSize:10}*使用ES6提供的spread操作符让对象合并变得非常简单。函数参数在ES6中必须为参数指定默认值,这确实带来了很多方便。如果你需要检测某些参数是必需的,你可以这样做constisRequired=()=>{thrownewError('paramisrequired');};consthello=(name=isRequired())=>{console.log(`hello${name}`)};//此处将抛出错误,因为名称需要hello();//这也会抛出一个错误hello(未定义);//正常的hello(null);你好('大卫');解构赋值时使用别名解构赋值是一个非常流行的JavaScript特性,但有时我们更喜欢用其他名称来引用这些属性,因此我们可以使用别名来完成:constobj={x:1};//获取obj.x作为{x}const{x}=obj;//获取obj.x作为{otherName}const{x:otherName}=obj;获取查询参数多年来,我们编写了粗糙的正则表达式来获取查询字符串值,但那些日子已经一去不复返了;现在我们可以通过URLSearchParamsAPI获取查询参数,而无需使用我们传递的URLSearchParams;获取查询参数的方法如下:functiongetQueryString(name){varreg=newRegExp("(^|&)"+name+"=([^&]*)(&|$)");varr=window.location.search.substr(1).match(reg);返回r?r[2]:空;}使用URLSearchParams://后,假设地址栏的查询参数是这样的"?post=1234&action=edit"varurlParams=newURLSearchParams(window.location.search);console.log(urlParams.has('post'));//trueconsole.log(urlParams.get('action'));//“编辑”控制台.log(urlParams.getAll('action'));//[“编辑”]console.log(urlParams.toString());//"?post=1234&action=edit"console.log(urlParams.append('active','1'));//"?post=1234&action=edit&active=1"比以前更容易使用
