前端常用公共方法【自用】

// 将参数对象转换为查询字符串-拼接url
export function buildQueryString(params) {
    return Object.keys(params).map(key => {
        if (Array.isArray(params[key])) {
            if (!params[key].length) return '';
            console.log(params[key])
            return `${encodeURIComponent(key)}=` + params[key].map(value => `${encodeURIComponent(value)}`).join(',');
        } else {
            return `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`;
        }
    }).filter(Boolean).join('&');
}

// 日期格式化
// 示例日期
// const date = new Date();

// 格式化日期
// console.log(dateFormat(date, 'yyyy-MM-dd HH:mm:ss')); // 输出:2024-11-13 15:36:56
// console.log(dateFormat(date, 'yy-M-d H:m:s')); // 输出:2024-11-13 15:36:56
// console.log(dateFormat(date, 'yyyy年MM月dd日 HH时mm分ss秒')); // 输出:2024年11月13日 15时36分56秒
export function dateFormat(date, fmt) {
    if (date === null || date === undefined) {
        return '';
    }

    if (!(date instanceof Date)) {
        date = new Date(date);
    }

    if (isNaN(date.getTime())) {
        return '';
    }

    const o = {
        'M+': date.getMonth() + 1, // 月份
        'd+': date.getDate(), // 日
        'H+': date.getHours(), // 小时
        'm+': date.getMinutes(), // 分
        's+': date.getSeconds(), // 秒
        'q+': Math.floor((date.getMonth() + 3) / 3), // 季度
        'S': date.getMilliseconds() // 毫秒
    };

    if (/(y+)/.test(fmt)) {
        fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
    }

    for (const k in o) {
        if (new RegExp('(' + k + ')').test(fmt)) {
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)));
        }
    }

    return fmt;
}

// 正则匹配数字
/*

// 示例用法
const str = "abc123def456ghi789";
const numbers = extractNumbers(str);
console.log(numbers); // 输出: [123, 456, 789]
*/


export function extractNumbers(str) {
    if (typeof str !== 'string') {
        return [];
    }

    // 使用正则表达式匹配所有的数字
    const matches = str.match(/\d+/g);

    // 如果没有匹配到任何数字,返回空数组
    return matches ? matches.map(Number) : [];
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值