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/7/28 14:00:46阅读更多 →
(重要) 快速的搭建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/7/28 14:00:46阅读更多 →
2026年性价比高的果蔬清洗机大揭秘!究竟哪家价格更优?

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

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

2026/7/28 14:00:46阅读更多 →
阻抗变换器原理与应用:从基础到实战

阻抗变换器原理与应用:从基础到实战

1. 阻抗变换器到底是什么&#xff1f;阻抗变换器这个名词听起来挺唬人的&#xff0c;但说白了就是个"阻抗翻译官"。想象一下你正在用中文跟一个只会说英语的老外交流&#xff0c;中间需要个翻译——阻抗变换器在电路里干的就是这个活。在射频和微波工程领域&#xff…

2026/7/28 15:25:23阅读更多 →
基于Arduino的宠物机器人制作:从硬件选型到行为编程全解析

基于Arduino的宠物机器人制作:从硬件选型到行为编程全解析

1. 项目概述&#xff1a;从零到一的宠物机器人如果你对电子制作和编程有点兴趣&#xff0c;又恰好想给家里的毛孩子或者自己找个新“玩伴”&#xff0c;那么用Arduino打造一台宠物机器人绝对是个充满乐趣和成就感的项目。这听起来可能有点硬核&#xff0c;但别担心&#xff0c;…

2026/7/28 15:25:23阅读更多 →
Map 随堂笔记

Map 随堂笔记

1、Map 的几种类型:HashMap : 允许键值为空&#xff0c;线程不安全&#xff0c;多线程同时写入&#xff0c;会导致数据不一致&#xff1b;HashTable : 不允许键值为空&#xff0c;线程安全&#xff0c;因此也导致了 Hashtable在写入时会比较慢&#xff1b;LinkedHashMap : 遍历…

2026/7/28 15:25:23阅读更多 →
Claude Opus 5大模型工程实践:26%成本优化与智能指数61分技术解析

Claude Opus 5大模型工程实践:26%成本优化与智能指数61分技术解析

在AI大模型快速迭代的今天&#xff0c;开发者们不仅要关注模型性能的突破&#xff0c;更需要从工程落地角度评估不同模型的性价比。最近Claude Opus 5在权威智能指数评测中以61分登顶&#xff0c;同时相比Fable 5实现了26%的成本优化&#xff0c;这一结果对实际项目选型具有重要…

2026/7/28 15:25:23阅读更多 →
AI如何提升学术写作效率:智能文献综述与论文生成

AI如何提升学术写作效率:智能文献综述与论文生成

1. 项目概述&#xff1a;AI如何重塑学术写作生态 学术论文写作向来是科研工作者最耗时的刚性需求。传统流程中&#xff0c;研究者需要花费30%-50%的工作时间在文献梳理、框架搭建和文字润色上。而"书匠策AI"这类智能写作助手的出现&#xff0c;正在从根本上改变这一局…

2026/7/28 15:25:23阅读更多 →
不会写代码也能做AI副业?揭秘ChatGPT+Notion+Canva组合拳,1人1天产出20条爆款内容

不会写代码也能做AI副业?揭秘ChatGPT+Notion+Canva组合拳,1人1天产出20条爆款内容

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;AI副业的本质与新手认知跃迁 AI副业并非简单地“用AI工具接单”&#xff0c;而是一场认知结构的重构——从执行者转向问题定义者、提示工程师与价值整合者。当多数人还在追问“哪个AI能帮我写周报”时&#xf…

2026/7/28 15:23:23阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

&#x1f539; 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具&#xff0c;凭借本地离线运行、可视化图形操作和任务自动化三大核心特性&#xff0c;赢得了众多用户的青睐。与普通在线对话AI工具不同&#xff0c;它属于能够直接操控本机软硬件的智能数字员工…

2026/7/28 4:06:39阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接&#xff0c;是用激光束对阀座壳体&#xff08;通常为不锈钢或铝合金&#xff09;进行密封焊接&#xff0c;使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/28 2:08:06阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX&#xff1a;三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/28 1:38:28阅读更多 →
告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿&#xff01;3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:29阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑&#xff1a;把几百页的财报、法规、技术手册扔给向量库&#xff0c;问一个具体问题&#xff0c;搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了&#xff0c;要么藏在几十条结果的最下面。语义相似≠真正相关&#xff0c;这个…

2026/7/28 0:00:29阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营&#xff0c;从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候&#xff0c;每天刷半小时抖音&#xff0c;手动把爆款视频的口播敲进备忘录&#xff0c;一条2分钟的视频得花十来分钟&#xff0c;碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:29阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时&#xff0c;发现推理速度只有可怜的 1-2 FPS&#xff0c;而别人的演示视频却能跑到 30 FPS 以上&#xff0c;那么问题很可能不在模型本身&#xff0c;而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后&#xff0c;会直接使用官方示例…

2026/7/27 16:57:54阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一&#xff1a;为什么你需要了解 Coze 和 Dify&#xff1f;如果你对 AI 应用开发感兴趣&#xff0c;但一看到“大模型”、“智能体”、“工作流”这些词就头疼&#xff0c;觉得门槛太高&#xff0c;那这篇文章就是为你准备的。很多开发者&#xff0c;包括我自己&#…

2026/7/28 3:17:03阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会&#xff1a;配图一直是个让人头疼的问题。2026年&#xff0c;AI生图工具已经非常成熟了&#xff0c;但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1&#xff1a;速度之王2026年6月11日&#xff0c…

2026/7/28 2:35:58阅读更多 →