2026-07-19 15:43:20
本文分享了20个实用的JavaScript技巧,帮助开发者减少代码量、提高工作效率,从而增加摸鱼时间。这些技巧涵盖了数组操作、对象处理、条件判断、循环优化等多个方面,非常适合在日常开发中使用。
声明和初始化数组:使用Array(5).fill('')可以快速创建一个包含5个空字符串的数组。对于二维数组,可以结合map方法,如Array(5).fill(0).map(() => Array(5).fill(0))。
求和、最小值和最大值:利用reduce方法可以快速计算数组的和、最大值和最小值。例如,array.reduce((a,b) => a+b)计算数组元素的总和。
数组排序:sort()方法默认按字符串Unicode码点排序,数字数组需提供比较函数,如array.sort((a,b) => a-b)实现升序排序。对象数组则可通过属性比较排序,如objectArr.sort((a, b) => a.last_name.localeCompare(b.last_name))。
过滤假值:使用array.filter(Boolean)可以轻松过滤掉数组中的0、undefined、null、false、""等假值。
条件判断优化:利用逻辑运算符||和&&可以简化条件判断,如arg1 = arg1 || 10设置默认值,foo === 10 && doSomething()实现条件执行。
去除重复值:通过array.filter((item,idx,arr) => arr.indexOf(item) === idx)或[...new Set(array)]可以快速去除数组中的重复元素。
计数器对象或Map:统计词频时,可以使用对象或Map,如table[char]=table[char]+1 || 1或countMap.set(string[i], countMap.get(string[i]) + 1)。
三元运算符:三元运算符可以简化条件表达式,如temp > 97 ? 'Visit Doctor!' : temp < 97 ? 'Go Out and Play!!' : 'Take Some Rest!'。
循环方法比较:for和for..in获取索引,forEach和for...of直接获取元素,forEach还可获取索引。
合并对象:使用扩展运算符...可以轻松合并多个对象,如const summary = {...user, ...college, ...skills}。
箭头函数:箭头函数没有自己的this和arguments,适合非方法函数,但不适用需要动态this的场景。
可选链:可选链操作符?.可以安全访问嵌套对象属性,如user.employee?.name,避免undefined或null导致的错误。
洗牌数组:利用sort()和Math.random()可以随机打乱数组顺序,如list.sort(() => Math.random() - 0.5)。
双问号语法:双问号??提供默认值,仅当左侧为null或undefined时生效,如const foo = null ?? 'my school'。
剩余和展开语法:剩余参数...manyMoreArgs收集多余参数,展开语法[...parts]合并数组,简化函数参数和数组操作。
默认参数:函数参数可设置默认值,如const search = (arr, low=0, high=arr.length-1) => high,简化函数调用。
进制转换:num.toString(2)、num.toString(16)等可将十进制数转换为二进制、十六进制等字符串表示。
交换变量:利用解构赋值[a,b] = [b,a]可以简洁地交换两个变量的值。
回文检查:单行代码str == str.split('').reverse().join('')可检查字符串是否为回文。
对象属性转换:Object.entries(obj)、Object.keys(obj)和Object.values(obj)分别将对象属性转换为键值对数组、键数组和值数组。
这些技巧不仅提高了代码的简洁性和可读性,还显著提升了开发效率,让开发者有更多时间进行其他活动。