LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

34 个实用 JavaScript 代码片段:提升开发效率的实用技巧

admin
2024年11月18日 17:45 本文热度 204

导读

这篇文章介绍了 34 个实用的 JavaScript 代码片段,涵盖数组操作、逻辑运算、数字操作、对象操作、字符串操作、浏览器操作等方面的技巧,还包括良好的编码习惯,如使用解构、类型转换等,掌握这些能提升开发效率和代码质量。

作为一名 JavaScript 开发者,你是否也曾被繁琐的代码、重复的劳动困扰?

想要更高效地开发,写出更简洁的代码,你需要掌握一些实用的技巧和工具。本文将带你领略 JavaScript 代码片段中的常见技巧,助你提升开发效率,打造更优雅的应用!

数组操作:高效处理数据集合

1. 声明和初始化数组

使用 Array(5).fill('') 可以轻松初始化一个指定大小的数组,并用默认值填充。 对于二维数组/矩阵,可以使用嵌套的 map 和 fill 方法:

javascript代码解读复制代码const array = Array(5).fill(''); // ["", "", "", "", ""]  const matrix = Array(5).fill(0).map(() => Array(5).fill(0));  // [Array(5), Array(5), Array(5), Array(5), Array(5)] // 0: (5) [0, 0, 0, 0, 0] // 1: (5) [0, 0, 0, 0, 0] // ...  // length: 5 

2. 过滤数组中的假值

使用 filter(Boolean) 可以快速过滤数组中的假值(0undefinednullfalse""''):

javascript代码解读复制代码const array = [3, 0, 6, 7, '', false]; array.filter(Boolean); // [3, 6, 7] 

3. 数组查找

indexOf() 可以查找元素在数组中的位置,找不到则返回 -1。 可以使用按位非运算符(~) 简化判断:

javascript代码解读复制代码if (~arr.indexOf(item)) { // 找到元素   // ... }  if (!~arr.indexOf(item)) { // 未找到元素   // ... } 

或者使用 includes() 进行更简洁的判断:

javascript代码解读复制代码if (arr.includes(item)) {    // ... } 

4. 洗牌数组

使用 sort() 方法结合 Math.random() 可以轻松实现洗牌:

javascript代码解读复制代码const list = [1, 2, 3, 4, 5, 6, 7, 8, 9]; list.sort(() => Math.random() - 0.5); // 随机排序 

5. 清空数组

使用 arr.length = 0 直接清空数组,而 arr = [] 只是重新赋值,原来的数组仍然占用内存。

javascript代码解读复制代码// 清空原始数组: arr.length = 0;  // 重新赋值给一个新的空数组: arr = []; 

6. 并集、交集和差集

使用 Set 对象可以方便地进行数组的并集、交集和差集操作:

javascript代码解读复制代码let a = new Set([1, 2, 3]); let b = new Set([4, 3, 2]);  // 并集 let union = new Set([...a, ...b]); // Set {1, 2, 3, 4}  // 交集 let intersect = new Set([...a].filter(x => b.has(x))); // Set {2, 3}  // 差集 let difference = new Set([...a].filter(x => !b.has(x))); // Set {1} 

逻辑运算:巧妙运用条件判断

7. 使用逻辑运算符简化条件判断

使用 || 和 && 可以简化嵌套的 if...else 或 switch 语句:

javascript代码解读复制代码function doSomething(arg1) {   arg1 = arg1 || 10; // 如果 arg1 未设置,则将其设置为 10   return arg1; }  let foo = 10; foo === 10 && doSomething(); // 输出: 10 foo === 5 || doSomething(); // 输出: 10 

8. 可选链:安全访问对象属性

可选链 ?. 在访问可能为空的对象属性时,可以避免错误,返回 undefined

javascript代码解读复制代码const user = { employee: { name: "Kapil" } };  user.employee?.name; // 输出: "Kapil" user.employ?.name; // 输出: undefined  

9. 空值合并运算符:提供默认值

?? 运算符可以提供默认值,当左侧操作数为 null 或 undefined 时,返回右侧操作数:

javascript代码解读复制代码const foo = null ?? 'my school'; // 输出: "my school"  const baz = 0 ?? 42; // 输出: 0 

10. ||= 和 ??=:条件赋值

||= 仅在左侧为假值时赋值,而 ??= 仅在左侧为 null 或 undefined 时赋值:

javascript代码解读复制代码let x = null; x ||= 5; // 输出: 5 let y = 10; y ||= 7; // 输出: 10  let a = null; a ??= 5; // 输出: 5 let b = 10; b ??= 7; // 输出: 10 

数字操作:灵活处理数值类型

11. 进制转换

使用 toString() 方法可以将十进制数字转换为二进制、十六进制等:

javascript代码解读复制代码const num = 10;  num.toString(2); // 输出: "1010"  num.toString(16); // 输出: "a" num.toString(8); // 输出: "12" 

12. 获取随机整数

使用 Math.random() 和 Math.floor() 可以获取指定范围内的随机整数:

javascript代码解读复制代码const random = (min, max) => Math.floor(Math.random() * (max - min + 1) + min);  random(1, 50); // 返回 1 到 50 之间的随机整数 

13. 字符串转数字

使用 + 或 Number() 可以快速将字符串转换为数字:

javascript代码解读复制代码let str = '2'; console.log(Number(str));  // 2 console.log(+str);  // 2 

14. 科学计数法

使用科学计数法可以简洁地表示较大的数字:

javascript代码解读复制代码for (let i = 0; i < 1e7; i++) {}  // 这些比较都返回 true 1e0 === 1; 1e1 === 10; 1e2 === 100; // ... 

对象操作:灵活处理数据结构

15. 检查对象是否为空

使用 Reflect.ownKeys() 和 constructor 属性可以判断对象是否为空:

javascript代码解读复制代码const isEmpty = obj => Reflect.ownKeys(obj).length === 0 && obj.constructor === Object;  isEmpty({}); // true isEmpty({a: "not empty"}); // false 

16. 动态属性名

使用方括号可以动态设置对象属性名:

javascript代码解读复制代码const key = 'name'; const person = { [key]: 'Alice' }; console.log(person.name); // 输出: Alice 

字符串操作:高效处理文本数据

17. 首字母大写

使用 charAt() 和 toUpperCase() 可以轻松实现首字母大写:

javascript代码解读复制代码const capitalize = str => str.charAt(0).toUpperCase() + str.slice(1);  capitalize("hello world"); // "Hello world" 

18. 反转字符串

使用 split()reverse() 和 join() 方法可以轻松实现字符串反转:

javascript代码解读复制代码const reverse = str => str.split('').reverse().join('');  reverse('hello world'); // "dlrow olleh" 

19. 过滤特殊字符

使用正则表达式可以方便地过滤字符串中的特殊字符:

javascript代码解读复制代码function filterCharacter(str) {   let pattern = new RegExp("[`~!@#$^&*()=:""'。,、?|{}':;'%,\\[\\].<>/?~!@#¥……&*()&;—|{ }【】';]");   let resultStr = "";   for (let i = 0; i < str.length; i++) {     resultStr = resultStr + str.substr(i, 1).replace(pattern, '');   }   return resultStr; }  filterCharacter('gyaskjdhy12316789#$%^&!@#1=123,./['); // "gyaskjdhy123167891123" 

浏览器操作:与浏览器交互

20. 将内容复制到剪贴板

使用 navigator.clipboard.writeText() 可以将文本复制到剪贴板:

javascript代码解读复制代码const copyToClipboard = (text) => navigator.clipboard.writeText(text);  copyToClipboard("Hello World");  

21. 清除所有 Cookie

使用 document.cookie 可以操作 Cookie:

javascript代码解读复制代码const clearCookies = document.cookie.split(';').forEach(   cookie => document.cookie = cookie.replace(/^ +/, '')   .replace(/=.*/, `=;expires=${new Date(0).toUTCString()};path=/`) ); 

22. 获取选中的文本

使用 window.getSelection().toString() 可以获取用户选中的文本:

javascript代码解读复制代码const getSelectedText = () => window.getSelection().toString(); 

23. 滚动到页面顶部

使用 window.scrollTo() 可以控制页面滚动:

javascript代码解读复制代码const goToTop = () => window.scrollTo(0, 0); 

24. 检查是否滚动到底部

使用 document.documentElement.clientHeightwindow.scrollY 和 document.documentElement.scrollHeight 可以判断页面是否滚动到底部:

javascript代码解读复制代码const scrolledToBottom = () => document.documentElement.clientHeight + window.scrollY                               >= document.documentElement.scrollHeight; 

25. 检查选项卡是否处于活动状态

使用 document.hidden 可以判断当前选项卡是否处于活动状态:

javascript代码解读复制代码const isTabInView = () => !document.hidden; 

26. 重定向到 URL

使用 location.href 可以进行页面重定向:

javascript代码解读复制代码const redirect = url => location.href = url;  redirect("https://www.google.com/"); 

27. 打开打印对话框

使用 window.print() 可以打开打印对话框:

javascript代码解读复制代码const showPrintDialog = () => window.print(); 

URL 操作:解析和处理 URL 信息

28. 从 URL 获取参数并转换为对象

使用 URL.split("?") 和 JSON.parse() 可以解析 URL 参数并转换为对象:

javascript代码解读复制代码const getParameters = URL => JSON.parse(`{"${decodeURI(URL.split("?")[1]).replace(/"/g, '\"').replace(/&/g, '","').replace(/=/g, '":"')}"}`);  getParameters("https://www.google.com.hk/search?q=js+md&newwindow=1");  // {q: 'js+md', newwindow: '1'} 

其他实用技巧

29. 检查是否为函数

使用 typeof 可以判断一个对象是否为函数:

javascript代码解读复制代码const isFunction = (obj) => typeof obj === "function" && typeof obj.nodeType !== "number" && typeof obj.item !== "function"; 

30. 防抖和节流

防抖: 在一段时间内只执行一次,即使触发多次事件,也只执行最后一次。

节流: 在指定时间范围内,即使触发多次事件,也只执行一次。

javascript代码解读复制代码// 防抖 function debounce(fn, delay) {   let timer = null;   return function () {     if (timer) {       clearTimeout(timer);     }     timer = setTimeout(() => {       fn.apply(this);     }, delay);   }; }  // 节流 function throttle(fn) {   let timer = null;   return function () {     if (timer) return;     timer = setTimeout(() => {       fn.apply(this, arguments);       timer = null;     }, 1000);   }; } 

31. 常见的正则表达式验证

使用正则表达式可以对常见的输入数据进行验证:

javascript代码解读复制代码// 验证 2-9 个中文字符 const validateName = (name) => /^[\u4e00-\u9fa5]{2,9}$/.test(name);  // 验证手机号 const validatePhoneNum = (mobile) => /^1[3-9]\d{9}$/.test(mobile);  // 验证密码(6-18 个字符:字母、数字、下划线) const validatePassword = (password) => /^[a-zA-Z0-9_]{6,18}$/.test(password); 

良好的编码习惯

32. 使用解构

使用解构可以使代码更简洁:

javascript代码解读复制代码const person = { name: "Alice", age: 25 }; const { name, age } = person;  console.log(name, age); // "Alice" 25 

33. 巧妙利用 JS 隐式类型转换

使用 +!! 和 + '' 可以快速进行类型转换:

javascript代码解读复制代码const price = +'32'; // 转换为数字 const isTrue = !!''; // 转换为布尔值 const str = 1 + ''; // 转换为字符串 

34. 使用 return 代替 if...else

使用 return 可以简化 if...else 语句,使代码更易读:

javascript代码解读复制代码if (condition1) {   // 执行 condition1    return; }  if (condition2) {   // 执行 condition2   return; } if (condition3) {   // 执行 condition3    return; } 

总结

掌握这些 JavaScript 代码片段中的实用技巧,可以帮助你提升代码效率,写出更优雅的代码。不断学习和实践,你将发现更多提升开发效率的利器! 祝你编码愉快,创造出更精彩的应用! 😊


该文章在 2024/11/18 17:45:02 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved