Js 在工作中常用的几个方法
wyx 6/1/2023 js
# 获取当前时间,根据格式化不同的格式
const getDate = (pattern, date = new Date()) => {
const year = date.getFullYear();
const month = date.getMonth() + 1 < 10 ? `0${date.getMonth() + 1}` : date.getMonth() + 1;
const day = date.getDate() < 10 ? `0${date.getDate()}` : date.getDate();
const hour = date.getHours() < 10 ? `0${date.getHours()}` : date.getHours();
const minute = date.getMinutes() < 10 ? `0${date.getMinutes()}` : date.getMinutes();
const second = date.getSeconds() < 10 ? `0${date.getSeconds()}` : date.getSeconds();
return pattern.replace('yyyy', year)
.replace('MM', month)
.replace('dd', day)
.replace('hh', hour)
.replace('mm', minute)
.replace('ss', second);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 判断是否为数组
const myIsArray = (arr) => {
return Array.isArray(arr)
}
1
2
3
2
3
# 判断一个数组中是否包含另一个数组中所有元素
const isSubset = (arr1, arr2) => {
return arr2.every(function(val) {
return arr1.indexOf(val) >= 0;
});
}
1
2
3
4
5
2
3
4
5
# 数组去重 Set
const arrayDeduplication = (arr) => {
return [...new Set(arr)]
}
1
2
3
2
3
# 数组连接,对象连接
// 连接数组
const arrAll = arr1.concat(arr2);
const arrAll = [...arr1, ...arr2];
// 连接对象
const objAll = Object.assign(target, ...source); // 浅拷贝
1
2
3
4
5
2
3
4
5
# Object方法总结
Object.keys(obj); // 获取对象的键 return []
Object.values(obj); // 获取对象的值 return []
Object.entries(obj); // 获取对象的键值对 return [[key, value], []]
1
2
3
2
3
# 判断一个Object是否为{}
const obj = {};
const isEmpty = (obj) => {
return Object.keys(obj).length === 0 && obj.constructor === Object;
}
console.log(isEmpty(obj))
1
2
3
4
5
2
3
4
5
# 获取当前url
const getUrl = () => {
return window.location.href;
}
1
2
3
2
3
# 强制跳转链接
window.localtion.replace(url);
1
# 设置cookie 并判断cookie是否拥有某个属性
document.cookie = 'name=name; value=value; expires=date; path=path'
const ifCookieExist = (attr) => {
return document.cookie.split(';').some(ele => ele.trim().startWith(`${attr}=`))
}
1
2
3
4
2
3
4
# 获取视图宽度和高度
const getViewWH = () => {
return {
width: Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0), // (不包含进度条, 包含进度条)
height: Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0)
}
}
1
2
3
4
5
6
2
3
4
5
6
# 从树结构中查找对应属性值的这个对象
/**
* 从树结构中查找对应属性值的这个对象
* @param treeData 树结构数据
* @param attr 属性key
* @param attrValue 属性值
* @param childName 对应child字段名
*/
export const selectObjFromTree = (treeData, attr, attrValue, childName = 'children') => {
treeData.forEach(ele => {
if (ele[attr] === attrValue) {
return ele;
} else {
if (ele[childName] && ele[childName].length > 0) {
selectObjFromTree(ele[childName], attr, attrValue, childName);
}
}
})
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 树型结构数据扁平化成数组
/**
* 树型结构数据扁平化成数组
* @param treeData 树数据
* @param childName 对应child字段名
* @return {[]}
*/
export const treeFlatArray = (treeData, childName = 'children') => {
const arr = [];
treeData.forEach(ele => {
arr.push(ele);
ele[childName] && ele[childName].length > 0 && arr.push(...treeFlatArray(ele[childName]))
});
return arr;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 手机号中间四位****处理
str.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2')
1