超实用的js常用函数合集

生成预定义的日期范围

在vue项目中经常会用到生成包含预定义日期范围的数组,以便在日期选择器等场景中提供给用户方便的选择选项。使用这种”组合式函数“得用户能够轻松选择常见的时间段,避免自己再去拼接。

export function useDateRange() {
    const presets = ref([
        { label: '今天', value: [dayjs().startOf('day'), dayjs().endOf('day')] },
        { label: '昨天', value: [dayjs().add(-1, 'day').startOf('day'), dayjs().add(-1, 'day').endOf('day')] },
        { label: '本周', value: [dayjs().startOf('week').add(1, 'day'), dayjs().endOf('week').add(1, 'day')] },
        { label: '上周', value: [dayjs().add(-1, 'week').startOf('week').add(1, 'day'), dayjs().add(-1, 'week').endOf('week').add(1, 'day')] },
        { label: '最近7天', value: [dayjs().startOf('day').add(-7, 'day'), dayjs().endOf('day')] },
        { label: '最近30天', value: [dayjs().startOf('day').add(-30, 'day'), dayjs().endOf('day')] },
        { label: '本月', value: [dayjs().startOf('month'), dayjs().endOf('month')] },
        { label: '上月', value: [dayjs().add(-1, 'month').startOf('month'), dayjs().add(-1, 'month').endOf('month')] },
        { label: '近三月', value: [dayjs().add(-2, 'month').startOf('month'), dayjs().endOf('month')] },
        { label: '本季度', value: [dayjs().startOf('quarter'), dayjs().endOf('quarter')] },
        { label: '本年', value: [dayjs().startOf('year'), dayjs().endOf('year')] },
    ])

    return presets
}

// 使用示例
import { useDateRange } from "@/composables/common.js";
const dateRanges = useDateRange();
// 输出预定义日期范围数组
console.log(dateRanges);

 友好时间差函数 

 函数用于计算给定时间与当前时间的时间差,并以友好的方式返回表示该时间差的字符串。该函数通常用于处理时间戳或日期对象,以便在界面上显示相对时间。

在网上找了几个写的麻烦,还报错,自己撸一个简单的。


export function GetTime(time) {

	// params: time 毫秒时间戳或正确日期格式 
    const ori_stamp = new Date(time).getTime();
    const cur_stamp = new Date().getTime();
    const delay = cur_stamp - ori_stamp;

    if (delay < 1000 * 60 * 1)
        return `${Math.floor(delay / 1000)}秒前`;
    if (delay < 1000 * 60 * 60)
        return `${Math.floor(delay / (1000 * 60))}分钟前`;
    if (delay < 1000 * 60 * 60 * 24)
        return `${Math.floor(delay / (1000 * 60 * 60))}小时前`;
    return `${Math.floor(delay / (1000 * 60 * 60 * 24))}天前`;
}

 模板替换函数

用于替换字符串中的占位符,生成一个新的字符串。可以通过传递一个键值映射表,将占位符替换为相应的值。在一些复杂的场景非常有用。

function format(str, key_map, pattern){
	pattern = pattern || /##(.*?)##/g
	res = str.replace(pattern, (match, group)=>{return key_map[group]||match});
	return res
}
const URL = 'https://www.abc.com/order/index?filter={"type":0,"user":"","create_time":"##create_time##","item_title":"","status":"0","adzone_id":"","time":"2","media_id":""}&sort=id&order=asc&offset=##offset##&limit=##limit##'
// 第一次进行替换
let url = format(URL, {create_time: "2024-01-01 00:00:00 - 2024-01-01 23:59:59"})
console.log(url)
// 'https://www.abc.com/order/index?filter={"type":0,"user":"","create_time":"2024-01-01 00:00:00 - 2024-01-01 23:59:59","item_title":"","status":"0","adzone_id":"","time":"2","media_id":""}&sort=id&order=asc&offset=##offset##&limit=##limit##'
# 第二次进行替换
let paginates = {"offset": "0", "limit": "100"}
let url = format(url, paginates)
console.log(url)
# 'https://www.abc.com/order/index?filter={"type":0,"user":"","create_time":"2024-01-01 00:00:00 - 2024-01-01 23:59:59","item_title":"","status":"0","adzone_id":"","time":"2","media_id":""}&sort=id&order=asc&offset=0&limit=100'

随机字符串生成函数 

生成一个指定长度的随机字符串,随然简单,但是自己写还浪费时间,直接copy不是更爽。

function randomString(length) {
  const charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
  let result = '';
  
  for (let i = 0; i < length; i++) {
    const randomIndex = Math.floor(Math.random() * charset.length);
    result += charset.charAt(randomIndex);
  }

  return result;
}

  查看原文:你一定会用得上的超实用的js函数合集

 关注公众号 "字节航海家" 及时获取最新内容

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值