JavaScript 数组方法大全(口语化+超详细版)
数组就像是一个可以装很多东西的魔法盒子 ,JavaScript 提供了超多方法让我们增删改查、排序、遍历这个盒子里的东西。下面分门别类介绍,保证你一看就懂!
🔥 一、增删改查(基本操作)
1. 添加元素
-
**
push()
→ 往屁股后面塞**(返回新长度)bashlet fruits = ['苹果', '香蕉']; fruits.push('橘子'); // ['苹果', '香蕉', '橘子']
-
**
unshift()
→ 往前面插**(返回新长度)perlfruits.unshift('西瓜'); // ['西瓜', '苹果', '香蕉', '橘子']
2. 删除元素
-
**
pop()
→ 从屁股后面踢走**(返回被踢的元素)perlfruits.pop(); // '橘子' → 剩下 ['西瓜', '苹果', '香蕉']
-
**
shift()
→ 从前面踢走**(返回被踢的元素)perlfruits.shift(); // '西瓜' → 剩下 ['苹果', '香蕉']
3. 替换/插入(万能方法)
-
**
splice()
→ 手术刀**,想切哪就切哪(会修改原数组)perllet arr = ['A', 'B', 'C', 'D']; arr.splice(1, 2, 'X', 'Y'); // 从索引1开始,删2个,插入'X'和'Y' console.log(arr); // ['A', 'X', 'Y', 'D']
🔍 二、查找与判断
1. 找元素
-
**
indexOf()
→ 找 第一次出现的位置**(找不到返回-1
)less['苹果', '香蕉', '橘子'].indexOf('香蕉'); // 1
-
**
includes()
→ 有没有这个东西?**(返回true/false
)less['A', 'B'].includes('B'); // true
-
**
find()
→ 按条件找第一个符合的**bashlet users = [{id: 1, name: '小明'}, {id: 2, name: '小红'}]; users.find(user => user.id === 2); // {id: 2, name: '小红'}
2. 判断数组
-
**
Array.isArray()
→ 这是数组吗?**javascriptArray.isArray([1, 2]); // true Array.isArray('123'); // false
🔄 三、遍历与转换
1. 循环数组
-
**
forEach()
→ 把每个元素都摸一遍**(没有返回值)ini[1, 2, 3].forEach(num => console.log(num * 2)); // 2, 4, 6
-
**
map()
→ 把每个元素加工一下,返回新数组**dartlet doubled = [1, 2, 3].map(num => num * 2); // [2, 4, 6]
-
**
filter()
→ 筛出符合条件的**dartlet evens = [1, 2, 3, 4].filter(num => num % 2 === 0); // [2, 4]
2. 合并/拼接
-
**
concat()
→ 把多个数组合并**(不修改原数组)css[1, 2].concat([3, 4]); // [1, 2, 3, 4]
-
**
join()
→ 把数组变成字符串**bash['A', 'B', 'C'].join(' - '); // "A - B - C"
📊 四、排序与计算
1. 排序
-
**
sort()
→ 默认按字母排序**(会修改原数组)css['Banana', 'Apple', 'Orange'].sort(); // ['Apple', 'Banana', 'Orange']
**⚠️ 注意**:数字排序要自己写规则!
css[10, 2, 5].sort((a, b) => a - b); // [2, 5, 10]
2. 计算
-
**
reduce()
→ 把数组压缩成一个值**(比如求和)dart[1, 2, 3].reduce((sum, num) => sum + num, 0); // 6
-
**
some()
→ 有没有至少一个符合条件?**ini[1, 2, 3].some(num => num > 2); // true
-
**
every()
→ 是不是全部符合条件?**ini[1, 2, 3].every(num => num > 0); // true
💡 五、其他实用方法
1. 反转数组
-
**
reverse()
→ 倒着排**(会修改原数组)scss[1, 2, 3].reverse(); // [3, 2, 1]
2. 截取数组
-
**
slice()
→ 切一块出来**(不修改原数组)scss[1, 2, 3, 4].slice(1, 3); // [2, 3](从1开始,到3之前)
3. 扁平化数组
-
**
flat()
→ 把嵌套数组"压平"**scss[1, [2, [3]]].flat(2); // [1, 2, 3](2代表压平2层)
4. 检查空位
-
**
fill()
→ 批量填充值**scssnew Array(3).fill(0); // [0, 0, 0]
🚀 总结:什么时候用什么方法?
需求 | 推荐方法 |
---|---|
往数组加东西 | push() / unshift() |
从数组删东西 | pop() / shift() |
查找元素 | indexOf() / find() |
遍历数组 | forEach() / map() |
筛选数组 | filter() |
数组变字符串 | join() |
排序 | sort() |
计算总和 | reduce() |
合并数组 | concat() |
🎯 终极口诀
- **增删改查用
push/pop/splice
** - **查找用
indexOf/find
** - **遍历用
forEach/map
** - **计算用
reduce/some/every
** - **排序用
sort
,合并用concat
**
数组方法就像工具箱里的工具,用对了事半功倍。