vue常用方法

 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
}

 

你可能感兴趣的:(vue.js,javascript,前端)