主题
JavaScript 方法速查
对象、数组、字符串、数值常用方法 + 正则汇总。
一、类型与原生
Object.prototype.toString.call(obj) === '[object Array]'判断类型(现代用Array.isArray)。Object.freeze(obj)冻结;obj.hasOwnProperty('prop')自身属性。- 循环属性:
for-in/Object.keys()(键)/Object.values()(值)/Object.entries()(键值对)。 :class="{'font-big': showSearch}";:style="[{'font-size': x}]"(小程序支持度低)。- 时间:
new Date().toLocaleString('chinese', { hour12: false })。
二、对象
- 清空:
Object.keys(obj).forEach(k => delete obj[k])或Object.assign。 - 合并:
Object.assign(obj, ...sources)。 - 单个:
obj.str = 'str'。
三、数组
indexOf/lastIndexOf查下标(对象数组按引用匹配);concat拼接不改原。join(',')转字符串(默认逗号)。Array.from(new Set(arr))去重。new Array(n).fill(true)定长填充。reduce累加;fill填充;Array.isArray。slice(start,end)提取子数组不改原;splice(start, deleteCount, ...items)删+插改原,返回被删。arr.splice(index, 0, 'a','b')固定位置添加。
| 增删位置 | 方法 | 说明 |
|---|---|---|
| 末尾添加 | push(...items) | 末尾多添,改原 |
| 开头添加 | unshift(...items) | 开头多添,改原 |
| 末尾移除 | pop() | 末尾移除,改原 |
| 开头移除 | shift() | 开头移除,改原 |
| 反转/排序 | reverse / sort | 改原(Unicode 升序,可自定义) |
| 遍历方式 | 特点 |
|---|---|
for | 支持 break,return 需方法包裹 |
for-in | 不推荐(遍历可枚举属性) |
for-of | 遍历值,支持 break |
forEach | 无 break 无返回 |
map | 返回新数组,需 return |
| 数组表达式 | 行为 |
|---|---|
every | 全满足才 true |
some | 任一满足即短路 true |
filter | 返回满足条件的元素组成的 [] |
find | 返回首个元素,无则 undefined |
findIndex | 返回首个下标,无则 -1 |
js
[1,2,3].join(',') // "1,2,3"
`${birthday.slice(0,4)}-${birthday.slice(4,6)}-${birthday.slice(6,8)}`
objArr.splice(index, 1)
arr.map((item,idx)=> item>2 ? item : item) // 箭头省{}不能显式return
arr.filter(item => item > 2)四、字符串
match(re)匹配返回字符;startsWith/endsWith/includes返回 Boolean。indexOf/lastIndexOf(仅一个时返回一致,下标正向)。trim/trimLeft/trimRight/repeat/replace/replaceAll/concat不改原。toLowerCase/toUpperCase/toLocaleLowerCase(土耳其等环境不同,默认用不带 locale)。replace(/-/g, '/');/gi不区分大小写。padStart(len, str)前填充;padEnd(len, str)后填充。- 包装方法
str.sub()等(上标下标下划线删除线斜体,已不推荐,可 v-html)。
字符串截取三兄弟对比
| 方法 | 规则 | 负数 | 大小反 | 推荐度 |
|---|---|---|---|---|
substr(start,len) | 起始下标 + 长度截取 | 负值返空 | — | ❌ 弃用,与其他不一致 |
substring(start,end) | 下标包前不包后 | 负转 0 | 对调参数 | ⚠️ 一般 |
slice(start,end) | 下标包前不包后 | 支持负(倒 -1) | 不对调,返空 | ✅ 推荐 |
split转数组:无参/不符→[原串];''→字符拆解;空串''.split(',')→[''](需先判空)。
js
"5".padStart(3, "0") // "005"
str.replace(/abcd/gi, "一二") // 同 /aBcD/ig
str.slice(2, -2) // 倒 -1 起,不包后
"".split(",") // [''], 需先判空五、数值 / Math
num.toFixed(n)转字符串保留 n 位(近似四舍五入,银行家舍入,不准确)。Math.round四舍五入;Math.ceil向上;Math.floor向下。Math.random()0-1 不含 1(通常 16 位)。Math.max/min。parseInt转整数;parseFloat转浮点。Math.ceil(Math.random()*100)生成 0-100 随机数。
js
2.55.toFixed(1) // "2.5"(向下,银行家)
(-2.55).toFixed(1) // "-2.5"(操作符优先级,负数不加括号返数字)六、正则速记
[]任一;[^]非;.单字符(不含换行);*+{1,}?{n};a|b或。\d数字\D非数字;\w[a-zA-Z0-9_]\W;\s空白\S;\b单词边界\B。\u4e00-\u9fa5汉字;^[-+]?\d+(\.\d+)?$正负数;^[A-Za-z0-9]+$数字字母。<[^>]+>html;\n换行\t制表\r回车。