JS - 一些小技巧
一、String Skill格式化金钱constThousandNumnumnum.toString().replace(/\B(?(\d{3})(?!\d))/g,,);constmoneyThousandNum(19941112);// money 19,941,112生成随机IDconstRandomIdlenMath.random().toString(36).substr(3,len);constidRandomId(10);// id jg7zpgiqva操作URL查询参数constparamsnewURLSearchParams(location.search.replace(/\?/ig,));// location.search ?nameyajunsexfemaleparams.has(yajun);// trueparams.get(sex);// female二、Number Skill取整constnum1~~1.69;constnum21.69|0;constnum31.690;// num1 num2 num3 1 1 1转数值只对null、、false、数值字符串有效,转成Number类型constnum1null;constnum2;constnum3false;letnum4169;// num1 num2 num3 num4 0 0 0 169时间戳consttimestampnewDate(2019-03-31);// timestamp 1553990400000精确小数constRoundNum(num,decimal)Math.round(num*10**decimal)/10**decimal;constnumRoundNum(1.69,1);// num 1.7判断奇偶constOddEvennum!!(num1)?odd:even;constnumOddEven(2);// num even取最小最大值constarr[0,1,2];constminMath.min(...arr);constmaxMath.max(...arr);// min max 0 2生成范围随机数constRandomNum(min,max)Math.floor(Math.random()*(max-min1))min;constnumRandomNum(1,10);// 8三、Boolean Skill短路运算符constad1;// 满足条件赋值取假运算从左到右依次判断遇到假值返回假值后面不再执行否则返回最后一个真值constbd||1;// 默认赋值取真运算从左到右依次判断遇到真值返回真值后面不再执行否则返回最后一个假值constc!d;// 取假赋值单个表达式转换为true则返回false否则返回true判断数据类型undefined、null、string、number、boolean、array、object、symbol、date、regexp、function、asyncfunction、arguments、set、map、weakset、weakmapfunctionDataType(tgt,type){constdataTypeObject.prototype.toString.call(tgt).replace(/\[object /g,).replace(/\]/g,).toLowerCase();returntype?dataTypetype:dataType;}DataType(yajun);// stringDataType(19941112);// numberDataType(true);// booleanDataType([],array);// trueDataType({},array);// false是否为空对象constobj{};constflagDataType(obj,object)!Object.keys(obj).length;// flag true满足条件时执行constflagfalse;// undefined、null、、0、false、NaNflagFunc();四、Array Skill克隆数组const_arr[0,1,2];constarr[..._arr];constarrobject.assign([],_arr);constarrJSON.parse(JSON.stringify(_arr));// arr [0, 1, 2]合并数组constarr1[0,1,2];constarr2[3,4,5];constarr[...arr1,...arr2];// arr [0, 1, 2, 3, 4, 5];去重数组constarr[...newSet([0,1,1,null,null])];// arr [0, 1, null]清空数组constarr[0,1,2];arr.length0;// arr []截断数组constarr[0,1,2];arr.length2;// arr [0, 1]交换赋值leta0;letb1;[a,b][b,a];// a b 1 0过滤空值undefined、null、、0、false、NaNconstarr[undefined,null,,0,false,NaN,1,2].filter(Boolean);// arr [1, 2]数组首部插入成员letarr[1,2];// 以下方法任选一种arr.unshift(0);arr[0].concat(arr);arr[0,...arr];// arr [0, 1, 2]数组尾部插入成员leta0;letb1;[a,b][b,a];// a b 1 0创建指定长度数组constarr[...newArray(3).keys()];// arr [0, 1, 2]创建指定长度且值相等的数组constarrnewArray(3).fill(0);// arr [0, 00]reduce代替map和filterconst_arr[0,1,2];// mapconstarr_arr.map(vv*2);constarr_arr.reduce((t,c){t.push(c*2);returnt;},[]);// arr [0, 2, 4]// filterconstarr_arr.filter(vv0);constarr_arr.reduce((t,c){c0t.push(c);returnt;},[]);// arr [1, 2]// map和filterconstarr_arr.map(vv*2).filter(vv2);constarr_arr.reduce((t,c){cc*2;c2t.push(c);returnt;},[]);// arr [4]五、Object Skill克隆对象const_obj{a:0,b:1,c:2};// 以下方法任选一种constobj{..._obj};constobjObject.assign({},_obj);constobjJSON.parse(JSON.stringify(_obj));// obj { a: 0, b: 1, c: 2 }合并对象constobj1{a:0,b:1,c:2};constobj2{c:3,d:4,e:5};constobj{...obj1,...obj2};// obj { a: 0, b: 1, c: 3, d: 4, e: 5 }对象字面量constenvprod;constlink{dev:Development Address,test:Testing Address,prod:Production Address}[env];// link Production Address对象变量属性constflagfalse;constobj{a:0,b:1,[flag?c:d]:2};// obj { a: 0, b: 1, d: 2 }创建纯空对象constobjObject.create(null);Object.prototype.a0;// obj {}删除对象无用属性constobj{a:0,b:1,c:2};// 只想拿b和cconst{a,...rest}obj;// rest { b: 1, c: 2 }解构对象属性别名constobj{a:0,b:1,c:2};const{a,b:d,c:e}obj;// a d e 0 1 2五、Function Skill函数自执行constFuncfunction(){}();// 常用(function(){})();// 常用(function(){}());// 常用[function(){}()];检测非空参数functionIsRequired(){thrownewError(param is required);}functionFunc(nameIsRequired()){console.log(111name);}Func();// param is requiredFunc(222);// 111222优雅处理Async/Await参数functionAsyncTo(promise){returnpromise.then(data[null,data]).catch(err[err]);}const[err,res]awaitAsyncTo(Func());优雅处理多个函数返回值functionFunc(){returnPromise.all([fetch(/user),fetch(/comment)]);}const[user,comment]awaitFunc();// 需在async包围下使用

相关新闻

C++程序设计 原理与实践 Hello World std_lib_facilities.h

C++程序设计 原理与实践 Hello World std_lib_facilities.h

作为小白&#xff0c;刚开始看《C程序设计 原理与实践 第二版》&#xff0c;第2章 Hello World 书中的经典程序很简要 // hello_world.cpp #include "std_lib_facilities.h"int main() {cout << "Hello, World!\n";return 0; }笔者采用的是自带的cl…

2026/9/24 21:14:28 阅读更多 →
(重要) 快速的搭建ssm框架(聚合工程)   主要就是5个配置文件

(重要) 快速的搭建ssm框架(聚合工程) 主要就是5个配置文件

搭建的详细步骤见: https://blog.csdn.net/AdamCafe/article/details/91491025 SSM聚合工程 项目结构如下:ssm_dao 接口 实体类 接口映射文件 applicationContextion-dao.xml 配置文件 测试类代码如下: <?xml version"1.0" encoding"UTF-8"?> &…

2026/9/24 22:04:58 阅读更多 →
2026年性价比高的果蔬清洗机大揭秘!究竟哪家价格更优?

2026年性价比高的果蔬清洗机大揭秘!究竟哪家价格更优?

在当下&#xff0c;家庭在清洁与饮食健康领域面临诸多痛点&#xff0c;食品安全焦虑、手洗效率低下、传统清洁方式有隐患等问题困扰着大家。而蓝力鲸Blueceti作为集自主研发、设计、生产、销售于一体的健康家电品牌&#xff0c;为我们带来了优质的解决方案。下面就为大家详细介…

2026/9/24 20:34:30 阅读更多 →

最新新闻

AI工作流为什么需要微信入口?个人微信API接口在智能应用中的新场景

AI工作流为什么需要微信入口?个人微信API接口在智能应用中的新场景

做AI工作流的团队常陷入一个误区&#xff1a;把精力全放在模型能力和工具链上&#xff0c;对前端入口只挑"技术先进"的渠道——网页Chat、Slack、飞书机器人。结果工作流跑得再顺&#xff0c;用户参与率依然低&#xff0c;因为用户根本不在这些渠道上活跃。微信作为工…

2026/9/24 22:04:06 阅读更多 →
cAdvisor 报错 too many open files:inotify 与文件描述符根因排查指南

cAdvisor 报错 too many open files:inotify 与文件描述符根因排查指南

先讲一段真实经历。有次凌晨被监控告警吵醒&#xff0c;生产环境某个节点的 cAdvisor 容器反复 CrashLoopBackOff&#xff0c;kubectl logs拉下来&#xff0c;关键信息就那么一行&#xff1a;inotify_init: too many open files。第一次碰到的人&#xff0c;大概率会顺手把容器…

2026/9/24 22:04:06 阅读更多 →
香港科大百万奖金创业大赛15周年:硬科技创业者的试金石与连接器

香港科大百万奖金创业大赛15周年:硬科技创业者的试金石与连接器

在创业圈摸爬滚打这些年&#xff0c;我参加过不少赛事评选&#xff0c;也带过队伍去路演。说实话&#xff0c;大部分创业大赛活不过三届——要么奖金慢慢缩水成了噱头&#xff0c;要么平台沦为少数人的自嗨场&#xff0c;真正能持续办下去、口碑还在线的极少。所以当“香港科大…

2026/9/24 22:04:06 阅读更多 →
30天制作20分钟科幻短剧:AI视频生成工作流实操拆解

30天制作20分钟科幻短剧:AI视频生成工作流实操拆解

直接说结论&#xff1a;两个人&#xff0c;没有影视行业背景&#xff0c;用一套以 TapNow 为核心的 AI 生成工作流&#xff0c;30 天做完一部 20 分钟的科幻短剧。这件事在一年前听起来像天方夜谭&#xff0c;但放到现在&#xff0c;技术上已经完全走得通了。我在这 30 天里把整…

2026/9/24 22:04:06 阅读更多 →
WEEX提醒:从1300万港元假App案看,如何辨别真假平台

WEEX提醒:从1300万港元假App案看,如何辨别真假平台

一个名为“WEEX”的App&#xff0c;和官方平台&#xff0c;到底是不是一回事&#xff1f; 最近香港警方披露的一宗数字资产诈骗案&#xff0c;再次把这个问题摆到了台面上。据《星岛头条》报道&#xff0c;一名七旬男子通过WhatsApp收到自称“投资专家”的陌生消息&#xff0c;…

2026/9/24 22:04:06 阅读更多 →
电路板元器件检测:YOLO小目标漏检与密集框调参实战

电路板元器件检测:YOLO小目标漏检与密集框调参实战

简介&#xff1a;本资源面向从事电子制造质检、PCB缺陷检测及YOLO目标检测实战的开发者与研究人员&#xff0c;提供一套可直接用于训练的电路板元器件图像数据集&#xff0c;覆盖目标检测、小目标检测与密集检测等典型场景。压缩包共约2000个文件&#xff0c;以1660个txt标签、…

2026/9/24 22:03:05 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介&#xff1a;这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源&#xff0c;围绕YOLOv8实现渔船作业监控系统&#xff0c;可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件&#xff0c;约24.21MB&#xff0c;以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介&#xff1a;一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码&#xff0c;针对计算机相关专业正在做毕设或需要项目实战的学习者&#xff0c;可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过&#xff0c;可直接运行&#xff0c;覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住&#xff0c;是在一个老旧的WinForms模块里&#xff1a;几十个类依赖PropertyChanged通知&#xff0c;运行时反射读属性、发通知&#xff0c;每次启动慢半拍不说&#xff0c;一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事&#xff1a;用Flutter给OpenHarmony做一款游戏集合类的App&#xff0c;说白了就是把若干小游戏塞进一个壳里&#xff0c;用统一入口分发。这个方向本身不算新鲜&#xff0c;真正让我花了不少心思的&#xff0c;是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档&#xff0c;最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事&#xff1a;今天在表后面多加了两个空白行&#xff0c;明天给客户交稿前发现整个章节的编号全部错位&#xff0c;光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年&#xff0c;说实话&#xff0c;第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年&#xff0c;流量惨淡、功能臃肿、代码自己都懒得看第二遍之后&#xff0c;我才慢慢琢磨明白一个道理&#xff1a;第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践&#xff1a;原型怎样变成可用功能分类&#xff1a;[AI/大模型]细分主题&#xff1a;AI 增强型 CI/CD 流水线自动化与 GitOps 实践&#xff1a;Agent 工作流、工具调用与任务拆解&#xff1a;从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战&#xff1a;复盘记录怎样真正派上用场分类&#xff1a;[工程技术]细分主题&#xff1a;Kubernetes 生产环境运维与排障实战&#xff1a;可复制的项目复盘模板与决策记录大部分团队的事故复盘报告&#xff0c;最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理&#xff1a;核心链路应该先拆哪一步分类&#xff1a;[工程技术]细分主题&#xff1a;Docker 容器化技术与镜像安全管理&#xff1a;核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用&#xff08;包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →