- 想“找一个” → 用
find - 想“留一批” → 用
filter - 想“保留小数” →
toFixed()→ 记住它返回的是 字符串 - 想“去单位取数” →
parseInt() - 想“格式化日期” →
toISOString().slice(0,10)
- 删头 →
shift(),删尾 →pop() - 反转不改原数组 → 先
slice()拷贝 - 合并数组 → 用
...最优雅 - 查属性 →
hasOwnProperty或'key' in obj - 对象转数组对 →
Object.entries()
- 判断整数 →
Number.isInteger() - 判断 NaN → 记住只能用
Number.isNaN() - 调用时临时换 this →
call - 永久绑定 this →
bind - 累计计算 →
reduce,别忘了初始值!
🔥 记得快 · 用得准 · 不踩坑
💡 适用于初学者到进阶者 | 共 6 大类 · 40+ 条核心口诀
🔤 一、字符串方法口诀
| 方法 | 口诀 | 示例 |
|---|---|---|
trim() | 去空格,用 trim | " hi ".trim() → "hi" |
includes() | 查包含,includes | "abc".includes("b") → true |
split() / join() | 切分用 split,拼接用 join | "a-b-c".split("-") ["a","b"].join(",") |
replace() / replaceAll() | 换一次 replace,换全部 replaceAll | "aa".replace("a","b") → "ba" "aa".replaceAll("a","b") → "bb" |
padStart() / padEnd() | 补左边 padStart,补右边 padEnd | "5".padStart(2,"0") → "05" |
repeat() | 重复几次我来 repeat | "x".repeat(3) → "xxx" |
toUpperCase() / toLowerCase() | 转大小写很简单 | "Hi".toLowerCase() → "hi" |
📌 避坑提醒:
❌ replace() 默认只替换第一个
✅ 想全替换用 replaceAll() 或正则 /g
🔢 二、数组方法口诀
| 方法 | 口诀 | 示例 |
|---|---|---|
push() / pop() | 尾进尾出:push/pop | [1,2].push(3) → 长度变3 [1,2].pop() → 返回2 |
unshift() / shift() | 头进头出:unshift/shift | 少用,性能差 |
map() | 映射转换靠 map | [1,2].map(x=>x*2) → [2,4] |
filter() | 筛选留谁看 filter | [1,2,3].filter(x=>x>1) → [2,3] |
find() | 找一个用 find | .find(x=>x.id===1) → 找到即停 |
some() / every() | 查有无用 some/every | some(有满足)/every(全满足) |
reduce() | 累计计算靠 reduce | (sum,x)=>sum+x, 0 别忘初始值! |
sort() | 排序数字要函数 | [10,1].sort((a,b)=>a-b) → [1,10] |
slice() | 截取拷贝 slice | arr.slice(1,3) → 安全不改原数组 |
splice() | 真删真改 splice | splice(1,2) → 从索引1删2个 |
[...arr] | 展开拷贝最安全 | [...arr] 是现代 JS 首选 |
[...new Set(arr)] | Set 去重真方便 | 一行去重 [1,2,2] → [1,2] |
📌 避坑提醒:
- ❌
push()返回的是长度,不是数组 - ❌
sort()默认按字符串排,数字必须传(a,b)=>a-b - ❌
forEach()没有返回值,不能链式调用 - ✅ 数组拷贝别直接赋值,用
[...arr]
📦 三、对象方法口诀
| 方法 | 口诀 | 示例 |
|---|---|---|
Object.keys() | 键名 keys,值 values | keys(obj) → ['a','b'] |
Object.values() | values(obj) → [1,2] | |
Object.entries() | 键值对 entries | entries(obj) → [["a",1],["b",2]] |
{...obj} | 合并对象展开始 | {...o1, ...o2} 简洁优雅 |
Object.assign() | 浅拷贝用 assign 或展开 | Object.assign({}, obj) |
hasOwnProperty() | 查自有属性 hasOwnProperty | obj.hasOwnProperty('name') |
Object.freeze() | 冻结对象不能改 | 属性无法增删改 |
📌 避坑提醒:
- ❌
for...in会遍历原型链 - ✅ 查自有属性用
hasOwnProperty - ✅ 冻结对象用
Object.freeze(obj)
🔢 四、数字与判断口诀
| 方法 | 口诀 | 示例 |
|---|---|---|
toFixed() | 保留小数 toFixed | (3.141).toFixed(2) → "3.14"(字符串!) |
parseInt() | 取整用 parseInt | parseInt("100px") → 100 |
parseFloat() | 浮点 parseFloat | parseFloat("3.14%") → 3.14 |
Number.isInteger() | 判整数 Number.isInteger | Number.isInteger(5) → true |
Number.isNaN() | 判 NaN 只能用 Number.isNaN | Number.isNaN(NaN) → true NaN === NaN → false |
📌 避坑提醒:
- ❌
isNaN("abc")→true(错误类型转换) - ✅ 用
Number.isNaN()更安全 - ❌
toFixed()返回字符串,注意类型转换
🕰 五、日期方法口诀
| 方法 | 口诀 | 示例 |
|---|---|---|
Date.now() | 当前时间戳 Date.now() | Date.now() → 毫秒数 |
toISOString() | 格式化日期 toISOString | new Date().toISOString().slice(0,10) → "2024-04-05" |
📌 技巧:
快速获取今天日期:
new Date().toISOString().slice(0, 10)
🔗 六、函数 this 绑定口诀
| 方法 | 口诀 | 示例 |
|---|---|---|
call() | call 是马上调,this 和参数一起传 | fn.call(obj, a, b) |
bind() | bind 是生成新函数,this 永远不变 | const fn = func.bind(obj) |
apply() | apply 参数用数组 | fn.apply(obj, [a,b])(基本被 ... 取代) |
📌 理解口诀:
call→ “打电话”:立刻说bind→ “绑定”:永久固定apply→ “申请材料用文件夹”:参数放一个“数组”里
🧠 七、通用避坑口诀(必背 TOP 6)
| 口诀 | 解释 |
|---|---|
| 1. map 有返回,forEach 没有 | forEach 不能用于生成新数组 |
| 2. sort 数字要比较函数 | 否则 [10,1] 排成 [1,10] |
| 3. splice 改原数组,slice 不改 | 操作前想清楚是否允许修改 |
| 4. push 返回长度,不是数组 | 别写 const arr = old.push() |
| 5. 直接赋值是引用,拷贝要用展开 | [...arr] / {...obj} |
| 6. NaN 不等于自己 | 唯一一个 x !== x 的值,只能用 Number.isNaN() |