扩展运算符 ...:拆箱神器
作用:将数组“拆包”成独立元素,类似拆快递箱直接取物品
// 合并数组
const fruits = ["🍎", "🍌"];
const veggies = ["🥕", "🥦"];
const food = [...fruits, ...veggies]; // ["🍎", "🍌", "🥕", "🥦"]
// 函数传参
function add(a, b, c) { return a + b + c; }
const nums = [1, 2, 3];
add(...nums); // 6(自动拆解为 add(1, 2, 3))
// 复制数组(避免引用陷阱)
const arr = [10, 20];
const arrCopy = [...arr]; // 全新数组,修改 arrCopy 不影响 arr
关键点:简化数组合并、复制和函数调用,替代传统 concat() 和 apply()
Array.from() :类数组转正
作用:将伪数组(如 DOM 节点列表、字符串)转为真数组。
// DOM 节点转数组操作
const divs = document.querySelectorAll("div");
const divArray = Array.from(divs); // 现在可用数组方法(如 map、filter)
// 字符串转字符数组
Array.from("ES6"); // ["E", "S", "6"]
// 搭配映射函数
Array.from([1, 2, 3], x => x * 2); // [2, 4, 6]
场景:处理无法直接调用数组方法的类数组对象
Array.of() :解决构造器坑
问题:new Array(3) 创建长度为 3 的空数组
Array.of(3); // [3](直接创建含元素 3 的数组)
Array.of(1, "a", true); // [1, "a", true]
优势:避免 new Array() 的参数歧义
fill():批量填充数组
作用:快速初始化或覆盖数组值
// 初始化长度为 3、值全为 0 的数组
const arr = new Array(3).fill(0); // [0, 0, 0]
// 替换部分元素
const nums = [1, 2, 3, 4];
nums.fill(9, 1, 3); // [1, 9, 9, 4](索引 1-2 被替换)
注意:会修改原数组
includes():包含判断
解决痛点:传统 indexOf() 无法检测 NaN
[1, NaN, 3].includes(NaN); // true
[1, 2, 3].includes(2); // true
[1, 2, 3].includes(4); // false
优势:语义更清晰,支持 NaN 识别
牢记
“扩展符拆箱,from 转正忙;find 精准查,fill 填满仓;includes 验包含,遍历不用慌!”