1.获取图片url和后缀
2.获取所有树形结构当前节点及全部父节点
3.判断两个对象是否相同不关心顺序
4.下载文件流
/**
* 获取图片url和后缀
* Prefix 链接
* Extension 后缀
*/
export function getImgUrlParts(url: string) {
// 使用正则表达式匹配图片链接的部分内容和后缀
const match = url.match(/(.+)(\.\w+)$/);
if (match && match.length >= 3) {
return {
prefix: match[1], // 图片链接的部分内容(除去后缀)
extension: match[2], // 图片后缀
};
} else {
return null;
}
}
/**
* 获取所有树形结构当前节点及全部父节点
* tree 所有数据结构
* nodeId 选中的节点
*/
export function findNodeAndParents(tree: any, nodeId: number) {
let path = [] as any;
let displayName = '';
function walk(node: any, parentIds: any): any {
parentIds.push({
name: node.name,
displayName: node.displayName,
id: node.id,
});
if (node.id === nodeId) {
path = parentIds;
return true;
}
let found = false;
for (let i = 0; i < node.children.length && !found; i++) {
found = walk(node.children[i], [...parentIds]);
}
return found;
}
for (let i = 0; i < tree.length && path.length === 0; i++) {
walk(tree[i], []);
}
path.forEach((el: any, index: number) => {
if (index == path.length - 1) displayName += el.displayName;
else displayName += el.displayName + ' >> ';
});
return displayName;
}
/**
* 判断两个对象是否相同不关心顺序
*/
export function isEquivalent(a: any, b: any) {
// 获取对象的所有键
var aProps = Object.getOwnPropertyNames(a);
var bProps = Object.getOwnPropertyNames(b);
// 如果键的数量不同,那么它们一定不等价
if (aProps.length != bProps.length) {
return false;
}
aProps.sort();
bProps.sort();
for (var i = 0; i < aProps.length; i++) {
var propName = aProps[i];
// 如果属性的值不相同,那么它们一定不等价
if (a[propName] !== b[propName]) {
return false;
}
}
// 如果没有找到任何不同,那么这两个对象是等价的
return true;
}
/**
* 下载文件流
*/
export function downloadFiles(res: any) {
const blob = new Blob([res.data], { type: res.data.type }); // 创建blob文件
const fileName = res.headers['content-disposition'].split(';'); // 解析请求头里的文件名称
const filename2 = fileName[1].split('=');
const filename3 = decodeURIComponent(filename2[1]); // 文件名解码
let downloadElement = document.createElement('a'); // dom里创建一个a标签节点
let href = window.URL.createObjectURL(blob);
downloadElement.href = href; // 设置a标签的链接
downloadElement.download = filename3; // 设置a标签的文件名扩展名称
document.body.appendChild(downloadElement);
downloadElement.click();
document.body.removeChild(downloadElement); //移除元素;防止连续点击创建多个a标签
window.URL.revokeObjectURL(href); //移除创建的url
}