javascript常用的一些公共方法

news/2025/1/15 18:16:24/

获取当前时间

获取当前时间并补零的 JavaScript 方法:

function getCurrentDateTime() {const now = new Date();let year = now.getFullYear();let month = now.getMonth() + 1;let day = now.getDate();let hours = now.getHours();let minutes = now.getMinutes();let seconds = now.getSeconds();// 统一的补零方法const addZero = num => (num < 10 ? `0${num}` : num);// 补零操作month = addZero(month);day = addZero(day);hours = addZero(hours);minutes = addZero(minutes);seconds = addZero(seconds);return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}// 调用方法获取当前时间
const currentDateTime = getCurrentDateTime();
console.log(currentDateTime);

说明:使用了 JavaScript 内置的 Math.random() 函数来获取 0 到 1 之间的随机数。我们直接返回这个随机数。

获取随机数

控制位数和小数个数的获取随机数的 JavaScript 方法:

function getRandomNumber(digits, decimals) {const max = Math.pow(10, digits) - 1;const min = Math.pow(10, digits - 1);let randomNumber = Math.random() * (max - min + 1) + min;if (decimals > 0) {const factor = Math.pow(10, decimals);randomNumber = Math.floor(randomNumber * factor) / factor;} else {randomNumber = Math.floor(randomNumber);}return randomNumber;
}// 调用方法获取随机数
const randomNumber = getRandomNumber(4, 2); // 获取一个4位数,保留2位小数的随机数
console.log(randomNumber);

说明:添加了 digitsdecimals 两个参数,分别用来控制返回的数的位数和保留的小数的个数。我们首先根据指定的位数计算出最大值和最小值,然后使用 Math.random() 函数生成一个在这个范围内的随机数。

同时,我们还判断了 decimals 参数的值,如果大于 0,说明需要保留小数,我们就使用一个因子将随机数放大一定倍数,然后取整,最后再除以因子来保留指定的小数位数。如果小于等于 0,就直接取整。

获取随机颜色

获取随机颜色的 JavaScript 方法:

function getRandomColor() {const letters = "0123456789ABCDEF"; // 16进制字符let color = "#";for (let i = 0; i < 6; i++) {color += letters[Math.floor(Math.random() * 16)];}return color;
}// 调用方法获取随机颜色
const randomColor = getRandomColor();
console.log(randomColor);

说明:使用了 16 进制颜色表示法,颜色值由 6 个字符组成。我们定义了一个包含所有 16 进制字符的字符串,并使用循环随机选择 6 个字符,然后将这 6 个字符拼接起来,加上 # 号,就得到了一个随机颜色值。

数据处理

对传入数据进行处理的 JavaScript 公共方法:

function processData(data, decimals = 2, defaultValue = "-") {if (typeof data === "number") {return data.toFixed(decimals);} else if (!data && data !== 0) {return defaultValue;} else {return data;}
}// 调用方法处理数据
const data1 = processData(3.14159); // 默认保留两位小数
const data2 = processData(3.14159, 3); // 保留三位小数
const data3 = processData(null); // 返回默认值“-”
const data4 = processData(undefined); // 返回默认值“-”
const data5 = processData("", 0); // 返回默认值“0”
const data6 = processData("hello"); // 返回原始值“hello”
console.log(data1);
console.log(data2);
console.log(data3);
console.log(data4);
console.log(data5);
console.log(data6);

说明:首先判断传入的值是否为数字。如果是数字,就调用 toFixed() 方法保留指定的小数位数,并返回结果。如果不是数字,就判断是否为空、null、undefined,如果是,就返回一个默认值,否则就返回原始值。

查找属性值

根据某个属性值查找对象并返回另一个属性值的 JavaScript 方法:

function findObjectByProperty(arr, property, value, targetProperty) {const targetObj = arr.find(obj => obj[property] === value);return targetObj ? targetObj[targetProperty] : null;
}// 示例数据
const arr = [{id: 1, name: 'Tom', age: 18},{id: 2, name: 'Jerry', age: 21},{id: 3, name: 'Alice', age: 25},{id: 4, name: 'Bob', age: 20},{id: 5, name: 'Lily', age: 23},
];// 调用方法查找对象并返回对应属性值
const targetAge1 = findObjectByProperty(arr, 'id', 3, 'age');
const targetAge2 = findObjectByProperty(arr, 'name', 'Bob', 'age');
console.log(targetAge1); // 输出 25
console.log(targetAge2); // 输出 20

说明:使用 find() 方法查找数组中指定属性名称的对象,找到后返回该对象的目标属性值。如果没有找到,则返回 null。在调用方法时,我们可以根据需要提供数组、属性名称、属性值和目标属性名称等参数。

获取字符串中的数字

获取字符串中数字的 JavaScript 方法,支持获取字符串中的两个数字:

function getNumbersFromString(str) {const reg = /\d+/g;const matches = str.match(reg);return matches ? matches.map(num => parseInt(num)) : [];
}// 示例字符串
const str = '这是一个带数字123和456的字符串';// 调用方法获取字符串中数字
const numbers = getNumbersFromString(str);
console.log(numbers); // 输出 [123, 456]

说明:使用正则表达式 /\d+/g 匹配字符串中的数字,并将匹配结果保存在 matches 数组中。然后我们使用 map() 方法将匹配到的数字转换为数字类型,并返回该数组。

获取地址栏参数

获取地址栏参数的 JavaScript 方法:

function getUrlParam(key) {const reg = new RegExp('(^|&)' + key + '=([^&]*)(&|$)', 'i');const matches = window.location.search.substr(1).match(reg);return matches ? decodeURIComponent(matches[2]) : null;
}// 示例 URL:https://www.example.com/?name=Tom&age=18// 调用方法获取参数值
const name = getUrlParam('name');
const age = getUrlParam('age');
console.log(name); // 输出 "Tom"
console.log(age); // 输出 "18"

说明:使用正则表达式 (^|&) + key + '=([^&]*)(&|$)' 匹配地址栏中指定参数名称的参数值,并将匹配结果保存在 matches 数组中。然后我们使用 decodeURIComponent() 方法将匹配到的参数值进行解码,并返回该值。如果地址栏中没有指定参数,则返回 null。

分离对象属性

可用于将对象中的某些属性分离出来得到一个新的对象的公共 JavaScript 方法:

function extractProperties(obj, keys) {return keys.reduce((acc, key) => {if (obj.hasOwnProperty(key)) {acc[key] = obj[key];}return acc;}, {});
}const obj = { name: '小明', age: 18, gender: 'male' };
const extractedObj = extractProperties(obj, ['name', 'age']);console.log(extractedObj); // { name: '小明', age: 18 }

说明:将传入的 obj 对象中指定的属性 keys 分离出来得到一个新的对象,并返回该新对象。其中,obj 为需要被处理的对象,keys 为一个数组,包含了需要被提取到新对象中的属性名。


http://www.ppmy.cn/news/35756.html

相关文章

面试--每日一经

操作系统 死锁 死锁&#xff1a;是指两个或两个以上的进程在执行过程中&#xff0c;由于竞争资源或者由于彼此通信而造成的一种阻塞的现象&#xff0c;若无外力作用&#xff0c;它们都将无法推进下去。   死锁的四个必要条件 互斥条件&#xff1a;一个资源每次只能被一个进…

ANR系列(一)——ANR源码拆解之Service的触发

前言 关于Service的ANR场景还是比较少见的&#xff0c;它的ANR设计原理也是比较简单&#xff0c;在很多监控的方案中都可以看得到 ANR触发场景 通过查阅Android官方文档&#xff0c;我们知道出现以下任何情况&#xff0c;系统都会针对我们的应用触发ANR&#xff1a; Servic…

人脸检测和人脸识别原理

一、MTCNN的原理 搭建人脸识别系统的第一步是人脸检测&#xff0c;也就是在图片中找到人脸的位置。在这个过程中&#xff0c;系统的输入是一张可能含有人脸的图片&#xff0c;输出是人脸位置的矩形框&#xff0c;如下图所示。一般来说&#xff0c;人脸检测应该可以正确检测出图…

【基础阶段】01中华人民共和国网络安全法

文章目录1 网络安全行业介绍2 什么是黑客和白帽子3 网络安全课程整体介绍4 网络安全的分类5 常见的网站攻击方式6 安全常见术语介绍7 《网络安全法》制定背景和核心内容8 《全国人大常委会关于维护互联网安全的决定》9《中华人民共和国计算机信息系统安全保护条例》10 《中华人…

比肩ChatGPT的国产AI:文心一言——有话说

&#x1f517; 运行环境&#xff1a;chatGPT&#xff0c;文心一言 &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 #### 防伪水印——左手の明天 #### &#x1f497; 大家好&am…

网络安全——网络层安全协议(2)

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.IPSec体系结构 1.IPSec体系结构 2. IPSec驱动程序 ① IPSec驱动程序 ②…

Kind Kubernetes | 通过 Helm 部署定制化 Prometheus-Operator 上传 Dockerhub?

文章目录1. 环境准备2. Kind 部署 Kubernetes2.1 安装 Ingress-nginx 组件2.2 安装 Metric Server 组件3. helm 快速安装 Prometheus-Operator3.1 获取镜像方法3.2 定制内容3.3 打包3.4 推送 Helm Package 至 DockerHub4. helm 安装定制化的 ghostwritten-kube-prometheus-stac…

大公司为什么禁止SpringBoot项目用Tomcat?

前言 在SpringBoot框架中&#xff0c;我们使用最多的是Tomcat&#xff0c;这是SpringBoot默认的容器技术&#xff0c;而且是内嵌式的Tomcat。同时&#xff0c;SpringBoot也支持Undertow容器&#xff0c;我们可以很方便的用Undertow替换Tomcat&#xff0c;而Undertow的性能和内…