/** * @description 添加单位 * @param {String | Number} value 值 100 * @param {String} unit 单位 px em rem */ export const addUnit = (value: string | number, unit = 'px') => { return !Object.is(Number(value), NaN) ? `${value}${unit}` : value } /** * @description 树转数组,队列实现广度优先遍历 * @param {Array} data 数据 * @param {Object} props `{ children: 'children' }` */ export const treeToArray = (data: any[], props = { children: 'children' }) => { data = JSON.parse(JSON.stringify(data)) const { children } = props const newData = [] const queue: any[] = [] data.forEach((child: any) => queue.push(child)) while (queue.length) { const item: any = queue.shift() if (item[children]) { item[children].forEach((child: any) => queue.push(child)) delete item[children] } newData.push(item) } return newData } /** * @description 获取正确的路经 * @param {String} path 数据 */ export function getNormalPath(path: string) { if (path.length === 0 || !path || path == 'undefined') { return path } const newPath = path.replace('//', '/') const length = newPath.length if (newPath[length - 1] === '/') { return newPath.slice(0, length - 1) } return newPath } /** * @description对象格式化为Query语法 * @param { Object } params * @return {string} Query语法 */ export function objectToQuery(params: Record): string { let query = '' for (const props of Object.keys(params)) { const value = params[props] if (!isEmpty(value)) { query += props + '=' + value + '&' } } return query.slice(0, -1) }