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

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

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

2026/7/28 14:00:38 阅读更多 →

最新新闻

风扇静音革命:用Fan Control为你的PC打造“隐形“散热管家

风扇静音革命:用Fan Control为你的PC打造“隐形“散热管家

风扇静音革命&#xff1a;用Fan Control为你的PC打造"隐形"散热管家 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub…

2026/7/28 14:23:12 阅读更多 →
如何用Diablo Edit2存档修改器告别暗黑2重复刷怪,3分钟打造完美角色?

如何用Diablo Edit2存档修改器告别暗黑2重复刷怪,3分钟打造完美角色?

如何用Diablo Edit2存档修改器告别暗黑2重复刷怪&#xff0c;3分钟打造完美角色&#xff1f; 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit 你是否厌倦了在暗黑破坏神2中花费数小时只为刷一件装备…

2026/7/28 14:23:12 阅读更多 →
成本CO

成本CO

物料成本构成 TCK07 成本构成结构 &#xff08;用公司代码取elehk&#xff09;TCKH3 成本构成结构和对应的列ckmlhd 成本估算号&#xff08;物料工厂得到一个成本估算号&#xff09;marc 取成本核算批量ckmlprkeph 标准成本 &#xff08;成本估算号年度期间 得到一条数据&#…

2026/7/28 14:23:12 阅读更多 →
RF射频电路PCB布局布线核心技巧与实战经验

RF射频电路PCB布局布线核心技巧与实战经验

1. RF射频信号布局布线的重要性与挑战在电子设计领域&#xff0c;RF射频电路一直被视为"黑魔法"般的存在。作为一名经历过无数次改板的PCB工程师&#xff0c;我深刻理解射频设计中的每一个微小失误都可能导致整个项目推倒重来。与低频数字电路不同&#xff0c;射频信…

2026/7/28 14:23:12 阅读更多 →
AI编程助手横向评测:ChatGPT、Gemini与Claude在游戏复刻项目中的实战表现

AI编程助手横向评测:ChatGPT、Gemini与Claude在游戏复刻项目中的实战表现

作为一名游戏开发者&#xff0c;你是否曾想过&#xff0c;如果让当前最顶尖的AI编程助手来“复刻”一款经典游戏&#xff0c;它们各自的表现会如何&#xff1f;是ChatGPT的代码逻辑更严谨&#xff0c;Gemini的创意更贴合需求&#xff0c;还是Claude的工程化能力更强&#xff1f…

2026/7/28 14:23:12 阅读更多 →
快手视频批量下载神器:3分钟学会无水印保存技巧

快手视频批量下载神器:3分钟学会无水印保存技巧

快手视频批量下载神器&#xff1a;3分钟学会无水印保存技巧 【免费下载链接】KS-Downloader 快手&#xff08;KuaiShou&#xff09;作品视频/图片下载工具 项目地址: https://gitcode.com/gh_mirrors/ks/KS-Downloader 还在为无法保存喜欢的快手视频而烦恼吗&#xff1f…

2026/7/28 14:22:12 阅读更多 →

日新闻

告别臃肿!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:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

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

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

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

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

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

2026/7/28 0:00:43 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档&#xff0c;可以直接使用&#xff01;系统支持图片、视频、摄像头等多种方式检测裂缝&#xff0c;功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像&#xff01; pubg绝地求生目标检测数据集 1分类&#xff1a;e_body&#xff0c;14905个标签&#xff0c;txt格式 共计14244张图&#xff0c;99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别&#xff1a; allies enemy tag图片总量&#xff1a;7247张训练集&#xff1a;5139张验证集&#xff1a;1425张测试集&#xff1a;683张标注状态&#xff1a;全部已标注&#xff0c;即拿即用数据格式&#xff1a;支持YOLO格式及其他格式&#…

2026/7/28 5:03:42 阅读更多 →

月新闻