将obj转为url字符串
var queryString = Object.keys(obj).map(key => key + '=' + obj[key]).join('&');
获取URL的查询参数
q={};location.search.replace(/([^?&=]+)=([^&]+)/g,(_,k,v)=>q[k]=v);q;
展平数组
var arr4=arr3.flat(Infinity)
选取对象中的第一个
obj[Object.keys(obj)[0]]
数组对象数据格式根据年龄排序
var arr = [{'name': '张三', age: 26},{'name': '李四', age: 12},{'name': '王五', age: 37},{'name': '赵六', age: 4}];
arr.sort( (a,b)=> b.age-a.age);
console.log(arr)
随机排序
arr.sort( (a,b)=> Math.random()-0.5);
过滤undefined ,NAN,null,false,‘’
arr = arr.filter(val=>!(!val || val== ''));
过滤undefined ,NAN,null,false,‘’的数字数组
arr = arr.map(Number).filter(val=>!(!val || val== ''));
优化if(a==key || b==key || c==key)
[a, b, c].includes(key); // true/false
Set去重
let unique=(a)=>[...new Set(a)];
可对字符串, 数字 null , undefined , NAN , 正则 , 数组 , 函数, 去重
缺点:无法对多重对象去重
var obj = {} var arr2 = array.filter((item, index , array)=>{ return obj.hasOwnProperty(typeof item + item)?false : (obj[typeof item + item]=true) })
再次改良版去重
var obj = {} var arr2 = array.filter((item, index , array)=>{ return obj.hasOwnProperty(JSON.stringify(item) + typeof item + item)?false : (obj[JSON.stringify(item) + typeof item + item]=true) })
非负数代替Math.floor()
~~11.71 //11 11.71 | 0 //11
代替Math.round()
let a=24.7; a-0.5 | 0 // 25
es6解构交换赋值
let [a,b]=[b,a]
使用^判断是否同为正负数
(a^b)>=0 ; //true 相同; false 不相同
快速创建a链接
let b = "我是a标签包裹的文本".link(www.baidu.com)
es6重复字符
let d = "0".repeat(7);//"0000000"
快速判断IE8以下浏览器
let isIE8 = !+"1"
for循环条件简写
for(let i = arr.length;i--){}
隐藏所有指定元素
const hide2 = (el)=>Array.from(el).forEach(e=>(e.style.dispaly="none"))
arguments转化为数组
[].slice.call(arguments, 0) //选其中一种即可 [...arguments] Array.from(arguments)
选择器封装
let $ = name=>document.querySelectorAll(name);
console.log($('div'))
取出两个数组相同之处
let userList = [{id:1},{id:2},{id:3},{id:4},{id:5},{id:6}]; let checkboxList = [{id:1},{id:2}]; let userArr = userList.filter(item =>{return checkboxList.map(item => item.id).includes(item.id)});
..