收集项目中用到的工具函数

工具函数

收集项目中常用的工具函数,以备后用,使用 TS 编写。

1. 时间格式化

/**
 * 格式化时间格式
 * @param {*} value 传入时间(单位秒)
 * @returns 返回时间格式 XX 天 XX 小时 XX 分钟 XX 秒
 */
export const formatSecond = function (value: number): string {
  value = value ?? 0;
  let secondTime = parseInt(value); // 秒
  let minuteTime = 0; // 分
  let hourTime = 0; // 小时
  let dayTime = 0; // 天
  let result = '';
  //如果秒数不小于 60,将秒数转换成整数
  if (secondTime >= 60) {
    //获取分钟,除以 60 取整数,得到整数分钟
    minuteTime = parseInt(secondTime / 60);
    //获取秒数,秒数取佘,得到整数秒数
    secondTime = parseInt(secondTime % 60);
    //如果分钟不小于 60,将分钟转换成小时
    if (minuteTime >= 60) {
      //获取小时,获取分钟除以 60,得到整数小时
      hourTime = parseInt(minuteTime / 60);
      //获取小时后取佘的分,获取分钟除以 60 取佘的分
      minuteTime = parseInt(minuteTime % 60);
      //如果小时数不小于 24,将小时转换成天
      if (hourTime >= 24) {
        //获取天,获取小时除以 24,得到整数天
        dayTime = parseInt(hourTime / 24);
        //获取天后取佘的小时
        hourTime = parseInt(hourTime % 24);
      }
    }
  }
  if (secondTime > 0) {
    result = `${parseInt(secondTime)} 秒`;
  }
  if (minuteTime > 0) {
    result = `${parseInt(minuteTime)} 分 ${result}`;
  }
  if (hourTime > 0) {
    result = `${parseInt(hourTime)} 时 ${result}`;
  }
  if (dayTime > 0) {
    result = `${parseInt(dayTime)} 天 ${result}`;
  }
  return result;
};

2. 系统、环境和浏览器

/**
 * 判断是否 PC
 */
export const isPC = (): boolean => {
  const userAgentInfo = navigator.userAgent;
  const Agents = ['Android', 'iPhone', 'SymbianOS', 'Windows Phone', 'iPad', 'iPod'];
  let flag = true;
  for (let v = 0; v < Agents.length; v++) {
    if (userAgentInfo.indexOf(Agents[v]) > 0) {
      flag = false;
      break;
    }
  }
  return flag;
};

/**
 * 判断是否微信环境(微信app,桌面微信软件等)
 */
export const isWechat = (): boolean => {
  return /MicroMessenger/i.test(window.navigator.userAgent);
};

/**
 * 判断是否 IOS 系统
 */
export const isIOS = (): boolean => {
  const u = navigator.userAgent;
  return !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
};

/**
 * 判断是否 Android 系统
 */
export const isAndroid = (): boolean => {
  const u = navigator.userAgent;
  return u.indexOf('Android') > -1 || u.indexOf('Adr') > -1;
};

/**
 * 浏览器
 */
export const getBrowser = () => {
  let explorer = navigator.userAgent.toLowerCase();
  let browser = "";
  if (
    explorer.indexOf("msie") > -1 ||
    !!window.ActiveXObject ||
    "ActiveXObject" in window
  ) {
    browser = "IE";
  } else if (explorer.indexOf("chrome") > -1) {
    browser = "chrome";
  } else if (explorer.indexOf("firefox") > -1) {
    browser = "firefox";
  } else if (explorer.indexOf("safari") > -1) {
    browser = "safari";
  } else if (explorer.indexOf("opera") > -1) {
    browser = "opera";
  }
  return browser;
}

3. 获取富文本内容中的图片

/**
 * 获取富文本内容中的图片
 */
export const getImgList = (richText: string): string[] => {
  // 如果富文本内容为空,则没有图片
  if (!richText) {
    return [];
  }

  const regex = /<img/g;
  const imgTags: string[] = richText.match(regex)!;
  let imgLen = 0;
  if (imgTags === null) {
    return [];
  } else {
    imgLen = imgTags.length;
  }

  // 没有找到图片
  if (imgLen === 0) {
    return [];
  }

  const imgElementList: string[] = [];
  const imgSrcList: string[] = [];

  richText.replace(/<img [^>]*src=['"]([^'"]+)[^>]*>/g, (match: string, capture: string): string => {
    imgSrcList.push(capture);
    imgElementList.push(match);
    return capture;
  });

  console.log('imgElementList', imgElementList); // 图片标签列表
  console.log('imgSrcList', imgSrcList); // 图片 src 属性值列表

  return imgSrcList;
};

4. 数字隐射字母

// 数字映射字母,如:{1 => "A"}、{2 => "B"}
const relationArr: Array<Array<string | number>> = [];
for (let i = 0; i < 26; i++) {
  const symbol: string = String.fromCharCode(65 + i);
  relationArr.push([i + 1, `${symbol}`]);
}
const indexSymbolRelationMap = new Map();
relationArr.forEach(([key, value]) => indexSymbolRelationMap.set(key, value));

// 使用
indexSymbolRelationMap.get(index + 1);  // index = 1, => A

原文链接:https://www.cnblogs.com/xinjie-just/p/17361594.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:收集项目中用到的工具函数 - Python技术站

(0)
上一篇 2023年4月28日
下一篇 2023年4月30日

相关文章

  • 移动端js触摸事件详解

    移动端JS触摸事件是专门针对移动端开发的触摸操作API,它能够捕获触摸屏幕的动作,比如点击、滑动、拖动、缩放等,并能够根据开发者的需求进行多样化的响应操作。本文将详细讲解移动端JS触摸事件的使用方法和应用技巧,方便开发者在移动端开发中进行快速应用。 一、移动端JS触摸事件类型 移动端JS触摸事件类型主要包括:touchstart、touchmove、touc…

    JavaScript 2023年6月10日
    00
  • 浅谈JS封闭函数、闭包、内置对象

    浅谈JS封闭函数、闭包、内置对象 JS封闭函数 JS的封闭函数,又称为IIFE(Immediately-Invoked Function Expression),是指定义一个匿名函数并立即执行该函数的语法结构。 封闭函数的特点: 定义一个函数,并立即自动调用该函数; 可以在全局作用域或另一个函数内部作用域中定义,从而实现封装变量和方法; 封闭函数的返回值可以…

    JavaScript 2023年6月10日
    00
  • Javascript 对象(object)合并操作实例分析

    我来详细讲解一下 “Javascript 对象(object)合并操作实例分析” 的完整攻略,过程中包含两条示例说明。 1、 操作实例说明 在 JavaScript 开发中,我们经常需要将两个或多个对象合并为一个对象,这种操作就是对象的合并。常见的合并方式有浅合并和深合并两种方式。 1.浅合并:将多个对象合并为一个对象,如果属性名相同则直接覆盖原有属性即可。…

    JavaScript 2023年5月27日
    00
  • 拿捏javascript对象增删改查应用及示例

    介绍拿捏JavaScript对象增删改查的攻略如下: 增加对象属性 在JavaScript中,我们可以通过以下方式向对象添加属性: objectName.propertyName = propertyValue; 其中,objectName表示对象的名称,propertyName表示要添加的属性名称,propertyValue表示要添加的属性值。 示例: l…

    JavaScript 2023年5月27日
    00
  • 将string解析为json的几种方式小结

    让我们详细讲解一下如何将字符串解析为JSON的几种方式。 使用JSON库解析字符串 目前市面上有很多种JSON库可供选择,比如jsoncpp、rapidjson等。我们以jsoncpp为例进行讲解。 步骤一:引入头文件 #include <json/json.h> 步骤二:将字符串解析为JSON格式 std::string str = &quot…

    JavaScript 2023年5月27日
    00
  • Angularjs 创建可复用组件实例代码

    AngularJS 是一个广泛使用的前端框架,其中最重要的概念之一是组件。组件是 AngularJS 中的基本构建块之一,可以帮助我们实现代码的可复用性、可维护性和可测试性。在本文中,我们将讨论在 AngularJS 中如何创建可复用组件实例代码的完整攻略。 创建可复用组件实例的准备工作 在创建可复用组件实例之前,我们需要完成以下准备工作: 确定组件的数据和…

    JavaScript 2023年6月11日
    00
  • 微信小程序 闭包写法详细介绍

    关于“微信小程序 闭包写法详细介绍”的攻略,我将按照以下的结构和内容进行详细讲解: 一、什么是闭包 闭包是JavaScript里的一个重要概念,它是指那些能够访问自由变量的函数。也就是说,闭包可以读取、修改函数内部的变量,并且这些变量在函数外部仍然可以被访问到。在实际的编程中,闭包通常被用来创建一些私有变量和私有方法,以实现封装的目的。 二、如何在微信小程序…

    JavaScript 2023年6月10日
    00
  • JavaScript本地储存:localStorage、sessionStorage、cookie的使用

    JavaScript本地储存:localStorage、sessionStorage、cookie的使用 什么是本地储存? 在网站开发中,需要将一些数据临时储存起来。本地储存技术就是把数据储存在客户端浏览器中,这样就可以避免跨页面、跨域、跨浏览器的问题,提高网站的性能和用户体验。本地储存技术通常包括localStorage、sessionStorage和Co…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部