javascript 常见工具函数(五)

news2024/10/7 10:25:18

41.深度拷贝对象:

  static deepCopyObj$(obj) {
        var result = Array.isArray(obj) ? [] : {};
        for (var key in obj) {
            if (obj.hasOwnProperty(key)) {
                if (typeof obj[key] === 'object' && obj[key] !== null) {
                    result[key] = Utils$.deepCopyObj$(obj[key]);   //递归复制
                } else {
                    result[key] = obj[key];
                }
            }
        }
        return result;
    }

42.对象属性和值,随机对象中的属性:

 /** 随机对象中的一个属性值 */
    static randomObj$(obj) {
        var keys = Object.keys(obj)
        let targetKey = keys[keys.length * Math.random() << 0];
        return obj[targetKey];


    };

43.比较两个数组是否相同:

static arrDiff(arr1, arr2) {
        let isNaN = Number.isNaN;
        return arr1.reduce(function (previous, i) {
            var found = arr2.findIndex(function (j) {
                return j === i || (isNaN(i) && isNaN(J));
            });
            return (found < 0 && previous.push(i), previous);
        }, []);
    };

44.字符串数组提取数字元素,并且转化为数组:

let showNumArr = this.zsConfig.zs_native_end_before_num.replace(/[^0-9]/ig,",").split(",");
showNumArr.shift();
showNumArr.pop();

45.字符串匹配 .jpg后缀以及.png后缀的图片地址:

regImgUrl$(str) {
        var reg = /http:\/\/.*?(gif|png|jpg)/gi;
        var reg2 = /https:\/\/.*?(gif|png|jpg)/gi;
        if (str.match(reg) && str.match(reg).length > 0) {
            return str.match(reg)[0];
        }
        if (str.match(reg2) && str.match(reg2).length > 0) {
            return str.match(reg2)[0];
        }
    }

46.计算时间戳间隔:

static calculateDiffTime$(start_time) {
        if (!parseInt(start_time)) return "-";
        var endTime = Math.round(new Date() / 1000);


        var timeDiff = endTime - start_time
        var day = parseInt(timeDiff / 86400);
        var hour = parseInt((timeDiff % 86400) / 3600);
        var minute = parseInt((timeDiff % 3600) / 60);


        day = day ? (day + '天') : 0;
        hour = hour ? (hour + "时") : 0;
        minute = minute ? (minute + "分") : 0;
        return day;   //注意这里返回的是字符串
    }

47.转化日期,时分秒格式,发送服务端用于:

 static dateFormat$(fmt, date) {
        let ret;
        const opt = {
            "y+": date.getFullYear().toString(),        // 年
            "M+": (date.getMonth() + 1).toString(),     // 月
            "d+": date.getDate().toString(),            // 日
            "h+": date.getHours().toString(),           // 时
            "m+": date.getMinutes().toString(),         // 分
            "s+": date.getSeconds().toString()          // 秒
            // 有其他格式化字符需求可以继续添加,必须转化成字符串
        };
        for (let k in opt) {
            ret = new RegExp("(" + k + ")").exec(fmt);
            if (ret) {
                fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
            };
        };
        return fmt;
    }

48.格式化数字:

 static formatNumber$(num) {
        if (isNaN(num)) return "0";
        if (num > 1000000) {
            num /= 1000000;
            if (num >= 100) {
                return Math.round(num) + "m"
            } else if (num >= 10) {
                num = num.toFixed(1);
                return num + "m"
            } else {
                num = num.toFixed(2);
                return num + "m"
            }
        } else if (num > 1000) {
            num /= 1000;
            if (num >= 100) {
                return Math.round(num) + "k"
            } else if (num >= 10) {
                num = num.toFixed(1);
                return num + "k"
            } else {
                num = num.toFixed(2);
                return num + "k"
            }
        } else {
            return Math.round(num);
        }
    }

49.身份证号判断是否成年;

 /**
    * 根据身份证号得到姓别和精确计算年龄
    */
    static analyzeIDCard$(IDCard){
       //获取用户身份证号码
       let userCard = IDCard;
       //如果身份证号码为undefind则返回空
       if(!userCard){
           return false;
       }
       //获取出生年月日
       let yearBirth = userCard.substring(6,10);
       let monthBirth = userCard.substring(10,12);
       let dayBirth = userCard.substring(12,14);
       //获取当前年月日并计算年龄
       let myDate = new Date();
       let monthNow = myDate.getMonth() + 1;
       let dayNow = myDate.getDate();
       let age = myDate.getFullYear() - yearBirth;
       if(monthNow < monthBirth || (monthNow == monthBirth && dayNow < dayBirth)){
           age--;
       }
       if (age >= 18) { return true; }
       return false;
   }

50.数字转中文:

  /**
     * 数字转中文
     * @param {*} num
     * @returns
     */
    static toChinesNum$(num) {
        let changeNum = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
        let unit = ["", "十", "百", "千", "万"];
        num = parseInt(num);
        let getWan = (temp) => {
            let strArr = temp.toString().split("").reverse();
            let newNum = "";
            for (var i = 0; i < strArr.length; i++) {
                newNum = (i == 0 && strArr[i] == 0 ? "" : (i > 0 && strArr[i] == 0 && strArr[i - 1] == 0 ? "" : changeNum[strArr[i]] + (strArr[i] == 0 ? unit[0] : unit[i]))) + newNum;
            }
            return newNum;
        }
        let overWan = Math.floor(num / 10000);
        let noWan = num % 10000;
        if (noWan.toString().length < 4) { noWan = "0" + noWan; }
        return overWan ? getWan(overWan) + "万" + getWan(noWan) : getWan(num);
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1351955.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

门店管理井然有序的秘诀,就在这1888字里

门店管理是一款帮助企业提高线下门店管理效率的应用&#xff0c;适用于所有拥有实体连锁门店的行业&#xff0c;如&#xff1a;连锁服饰、商超、数码产品、连锁餐饮等。 门店管理常见痛点 线下连锁门店的管理受位置、时间等因素影响&#xff0c;总部管理鞭长莫及&#xff1b; …

外贸自建站和独立站的区别?海洋建站方法?

外贸自建站和独立站的异同点&#xff1f;怎么建跨境电商网站&#xff1f; 越来越多的外贸企业开始关注和选择建立自己的网站来进行产品推广和销售。然而&#xff0c;在外贸建站领域中&#xff0c;存在两种常见的类型&#xff1a;外贸自建站和独立站。那么&#xff0c;这两者之…

Android Studio如何创建尺寸大小及API通用的模拟器

目录 前言 一、操作步骤 二、总结 三、更多资源 前言 在开发移动应用程序的过程中&#xff0c;使用模拟器进行测试是一种常见和方便的方式。Android Studio是一款功能强大的集成开发环境&#xff0c;它提供了创建和管理模拟器的功能。在本文中&#xff0c;我们将介绍如何创…

面向对象(类和对象,对象内存图,成员变量和局部变量,封装,构造方法)

1. 类和对象 1.1 类和对象的理解 客观存在的事物皆为对象 &#xff0c;所以我们也常常说万物皆对象。 类 类的理解 类是对现实生活中一类具有共同属性和行为的事物的抽象类是对象的数据类型&#xff0c;类是具有相同属性和行为的一组对象的集合简单理解&#xff1a;类就是对…

C++的基础语句

C前奏 1.变量的定义2.键入和输出3.运算符4.sizeof()函数5.判断6.goto语句7.总结 这个专题&#xff0c;我会用简单的语言介绍C的语法&#xff0c;并会适当的对比实现相同或相似功能的C与python代码写法上的不同。 1.变量的定义 对于python来说&#xff0c;我们可以跳过定义直接…

python统计分析——直方图(plt.hist)

使用matplotlib.pyplot.hist()函数绘制直方图 from matplotlib.pyplot as pltdata_setnp.array([2,3,3,4,4,4,4,5,5,6]) plt.hist(fish_data) 下面介绍plt.hist()函数中常用的几个重要参数&#xff08;参数等号后为默认设置&#xff09;&#xff1a; &#xff08;1&#xff0…

从C++习题中思考

目录 一.开始1.1 二.变量和基本类型 C Peimer习题集第5版练习。 一.开始 1.1 编写程序&#xff0c;提示用户输入2个整数&#xff0c;打印出这两个整数指定的范围内的所有整数。 方式1&#xff1a;使用while循环。 #include<iostream> using namespace std; int main() …

RA4000CE (RTC模块)适用于汽车,工作温度范围宽,稳定性高

RA4000CE是一个集成了32.768 kHz数字温度补偿晶体振荡器(DTCXO)的RTC模块&#xff0c;适用于汽车&#xff0c;工作温度范围宽&#xff0c;稳定性高。它包括各种功能&#xff0c;如具有闰年校正的秒到年时钟/日历&#xff0c;时间警报&#xff0c;唤醒计时器&#xff0c;时间更新…

深入了解隧道代理HTTP的协议与技术细节

隧道代理HTTP&#xff0c;作为一种网络通信的桥梁技术&#xff0c;其背后的协议与技术细节承载着网络世界的无尽奥秘。对于技术人员而言&#xff0c;深入了解这些细节&#xff0c;不仅有助于优化网络性能&#xff0c;还能为网络安全提供坚实的保障。 一、隧道代理HTTP的协议基…

QQ邮件发送(PHP的Laravel)

1. 开启 QQ 邮箱的 SMTP 支持 2.里面会一个类似于密码之类&#xff08;复制一下&#xff09; 3.然后再 .env文件里面配置一下 MAIL_DRIVERsmtp —— 使用支持 ESMTP 的 SMTP 服务器发送邮件&#xff1b; MAIL_HOSTsmtp.qq.com —— QQ 邮箱的 SMTP 服务器地址&#xff0c;必…

MySQL之四大引擎、账号管理以及建库认识

目录 一、数据库存储引擎&#xff08;发动机&#xff09; 1.1、认识引擎 1.2、查看存储引擎 1.3、引擎常识 1.4、support字段说明 1.5、四大引擎 二、数据库管理 2.1、元数据库介绍&#xff1a; 2.2、分类&#xff1a; 2.3、增删改查以及使用操作 2.4、权限 三、数…

【docker】安装 Redis

查看可用的 redis版本 docker search redis拉取 redis最新镜像 docker pull redis:latest查看本地镜像 docker images创建挂在文件 mkdir -pv /test1/docker_volume/redis/datamkdir -pv /test1/docker_volume/redis/confcd /test1/docker_volume/redis/conf/touch redis.con…

八大算法排序@希尔排序(C语言版本)

目录 希尔排序概念算法思想示例分析结论算法步骤选择增量序列按增量分组逐步缩小增量 算法优势 代码实现核心算法希尔排序代码实现&#xff1a; 时间复杂度空间复杂度特性总结 该排序会关联到直接插入排序的知识点&#xff0c;如果对于直接插入排序还有所疑惑&#xff0c;可以跳…

Android studio ViewPager2 底部圆点指示器应用设计

一、activity_main.xml布局文件&#xff1a; <androidx.viewpager2.widget.ViewPager2android:id"id/viewpager2"android:layout_width"403dp"android:layout_height"442dp"app:layout_constraintEnd_toEndOf"parent"app:layout_c…

基于YOLOv8深度学习的人脸面部表情识别系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

基于Python +Selenium的爬虫详解

今天我们来详细学习一些 selenium 的强大用法 一、selenium简介 由于requests模块是一个不完全模拟浏览器行为的模块&#xff0c;只能爬取到网页的HTML文档信息&#xff0c;无法解析和执行CSS、JavaScript代码&#xff0c;因此需要我们做人为判断&#xff1b; 1、什么是sele…

OR-3H7(车规级),对标ACPL-217等

提供隔离反馈 逻辑电路之间的接口 提供1通道和4通道 电平转换 DC和AC输入 SMPS中的调节反馈电路 消除接地环路 特征 电流传输比 &#xff1a; IF 5mA时最小 50%&#xff0c;VCE 5V&#xff0c;Ta25 C 高输入输出隔离电压。&#xff08;VISO3&#xff0c;750Vrms&…

微服务-理论(CAP,一致性协议)

CAP理论 关于CAP理论的介绍可以直接看这篇文章 CAP分别是什么&#xff1f; 一致性&#xff08;Consistency 一致性包括强一致性&#xff0c;弱一致性&#xff0c;最终一致性。 一致性其实是指数据的一致性&#xff0c;为什么数据会不一致呢&#xff1f; 如上面这张图&…

循环购模式:重塑消费返利的新趋势

在当今的消费市场中&#xff0c;返利模式已不再是新鲜事。然而&#xff0c;循环购模式以其独特的“消费即分享&#xff0c;分享即赚钱”的核心理念&#xff0c;正在迅速成为消费者和商家共同关注的新焦点。这种模式的出现&#xff0c;不仅重新定义了消费与返利的关系&#xff0…

23款奔驰GLC260L升级香氛负离子 车载香薰

奔驰原厂香氛系统激活原车自带系统&#xff0c;将香气加藏储物盒中&#xff0c;通过系统调节与出风口相结合&#xff0c;再将香味传达至整个车厢&#xff0c;达到净化车厢空气的效果&#xff0c;让整个车厢更加绿色健康&#xff0c;清新淡雅。星骏汇小许Xjh15863 产品功能&…