Files
frontend-miniapp/src/utils/format.ts

91 lines
1.9 KiB
TypeScript

/**
* 格式化工具函数
*/
/**
* 格式化时间
* @param time 时间字符串
* @returns 格式化后的时间
*/
export const formatTime = (time: string): string => {
return time
}
/**
* 格式化距离
* @param distance 距离(米)
* @returns 格式化后的距离
*/
export const formatDistance = (distance: number): string => {
if (distance < 1000) {
return `${distance}`
}
return `${(distance / 1000).toFixed(1)}公里`
}
/**
* 格式化时长
* @param minutes 分钟数
* @returns 格式化后的时长
*/
export const formatDuration = (minutes: number): string => {
if (minutes < 60) {
return `${minutes}分钟`
}
const hours = Math.floor(minutes / 60)
const mins = minutes % 60
return mins > 0 ? `${hours}小时${mins}分钟` : `${hours}小时`
}
/**
* 截断文本
* @param text 文本
* @param maxLength 最大长度
* @returns 截断后的文本
*/
export const truncateText = (text: string, maxLength: number): string => {
if (text.length <= maxLength) {
return text
}
return text.substring(0, maxLength) + '...'
}
/**
* 防抖函数
* @param fn 函数
* @param delay 延迟时间(毫秒)
* @returns 防抖后的函数
*/
export const debounce = <T extends (...args: any[]) => any>(
fn: T,
delay: number
): ((...args: Parameters<T>) => void) => {
let timer: ReturnType<typeof setTimeout> | null = null
return (...args: Parameters<T>) => {
if (timer) clearTimeout(timer)
timer = setTimeout(() => {
fn(...args)
}, delay)
}
}
/**
* 节流函数
* @param fn 函数
* @param delay 延迟时间(毫秒)
* @returns 节流后的函数
*/
export const throttle = <T extends (...args: any[]) => any>(
fn: T,
delay: number
): ((...args: Parameters<T>) => void) => {
let lastTime = 0
return (...args: Parameters<T>) => {
const now = Date.now()
if (now - lastTime >= delay) {
fn(...args)
lastTime = now
}
}
}