数组去重
const uniqueArr = arr => [...new Set(arr)]
从url 获取参数转变为对象
const getParams = URL => {
JSON.parse(`{"${decodeUrl(URL.split(",")[1]).replace(/"/g, '\\"').replace(/&/g,'","').replace(/=/g, '":"')}"}`)
}
检查对象是否为空
const isEmpty = obj => Reflect.ownKeys(obj).length === 0 && obj.constructor === Object;
获取数据类型
const getType = data => {
const match = Object.prototype.toString.call(data).match(/(\w+)]/)
return match[1].toLocaleLowerCase()
}
深拷贝
const deepCopy = (obj, hash = new WeekMap()) => {
if(obj instanceof Date) {
return new Date(obj)
}
if(obj instanceof RepExp) {
return new RegExp(obj)
}
if(hash.has(obj) {
return hash.get(obj)
}
let property = Object.getOwnPropertyDescriptors(obj)
let cloneObj = Object,create(Object.getPrototypeOf(obj), property)
hash.set(obj, cloneObj)
for(let key of Reflect.ownKeys(obj)) {
if(obj[key] && typeof obj[key] === 'object') {
cloneObj[key] = deepCopy(obj[key], hash)
} else {
cloneObj[key] = obj[key]
}
}
return cloneObj
}
识别设备类型
const isMobile = () => {
return !!navigator.usrAgent.match(/(iPhone|iPod|Android|iOS|iPad|Backerrry|WebOS|Symbian|Windows Phone|Phone/i)
}
合并对象
const objA = {
X: 1
}
const objB = {
Y: 2
}
const obj = Object.assign({}, objA, objB);
动态添加对象属性
let obj = {};
let index = 1;
obj[`portoType${index}`] = 'portoType1';
小结
- 利用好filter reduce find map 等高级函数能够更简洁的实现想要的效果
参考