常见图片、音频和视频文件判断

const imageExtensions = ["jpg", "jpeg", "png", "gif", "webp", "bmp", "svg"] // 图片后缀
const videoExtensions: Array<string> = [
  "avi",
  "mpeg",
  "mov",
  "flv",
  "qsv",
  "kux",
  "3gp",
  "wmv",
  "rmvb",
  "asf",
  "mp4",
  "vob",
  "dat",
  "webm",
  "mpg",
  "mkv",
  "f4v",
] // 视频后缀

const audioExtensions: Array<string> = [
  "mp3",
  "wav",
  "aac",
  "wma",
  "ogg",
  "flac",
  "ape",
] // 音频后缀

// 将文件后缀数组转为Reg对象
interface FilesToReg {
  (arr: Array<string>): RegExp
}
const filesToReg: FilesToReg = (arr: Array<string>) => {
  return new RegExp(`\\.(${arr.join("|")})$`, "gi")
}
// 判断是否图片、音频或视频文件接口
interface IsFile {
  (str: string): Boolean
}
/**
 * 判断是否为图片
 * @param str
 * @returns
 */
export const isImg: IsFile = (str: string) => {
  return filesToReg(imageExtensions).test(str)
}
/**
 * 判断是否为音频
 * @param str
 * @returns
 */
export const isAudio: IsFile = (str: string) => {
  return filesToReg(audioExtensions).test(str)
}
/**
 * 判断是否为视频
 * @param str
 * @returns
 */
export const isVideo: IsFile = (str: string) => {
  return filesToReg(videoExtensions).test(str)
}

你可能感兴趣的:(常用工具,前端)