欢迎使用我的小程序👇👇👇👇

你是否曾感觉JavaScript数组像个装满数据的"沉默集装箱"?今天,我们来给它装上超能力!🚀
为什么数组方法如此重要?
想象一下,你有一个装满各种颜色袜子的抽屉(数组)。现在你想:
- 找出所有红色的袜子
- 把袜子按颜色分类
- 检查是否有成对的袜子
- 把脏袜子拿出来洗
如果没有数组方法,你得把手伸进抽屉里一件件翻找。但有了数组方法------就像拥有了一个智能机器人助手!🤖
四大类数组方法,轻松掌握
1️⃣ 查户口类:了解数组的"家庭情况"
length - 数组的"身高测量"
javascript
const fruits = ['苹果', '香蕉', '橙子'];
console.log(fruits.length); // 3,就像数水果篮里有几个水果
includes() - 数组的"人脸识别"
javascript
const playlist = ['周杰伦', '林俊杰', '邓紫棋'];
console.log(playlist.includes('周杰伦')); // true,确认偶像在歌单里
indexOf() 和 findIndex() - 数组的"捉迷藏专家"
javascript
const students = ['小明', '小红', '小刚'];
console.log(students.indexOf('小红')); // 1,小红坐在第二个位置
const scores = [85, 92, 78];
const firstFail = scores.findIndex(score => score < 80);
console.log(firstFail); // 2,找到第一个不及格的同学
2️⃣ 变戏法类:改变数组的"魔术师"
map() - 数组的"变形金刚" ⭐最常用!
javascript
const prices = [10, 20, 30];
const discounted = prices.map(price => price * 0.8); // 全场八折!
console.log(discounted); // [8, 16, 24]
forEach() - 数组的"广播喇叭"
javascript
const tasks = ['写代码', '喝咖啡', '修bug'];
tasks.forEach(task => console.log(`正在:${task}`));
// 依次播报每项任务
reduce() - 数组的"会计先生" ⭐有点难但超有用!
javascript
const shoppingCart = [100, 50, 25];
const total = shoppingCart.reduce((sum, price) => sum + price, 0);
console.log(total); // 175,计算购物车总价
3️⃣ 大扫除类:整理数组的"清洁工"
filter() - 数组的"筛子" ⭐五星推荐!
javascript
const numbers = [1, 2, 3, 4, 5, 6];
const evens = numbers.filter(num => num % 2 === 0);
console.log(evens); // [2, 4, 6],只留下偶数
slice() - 数组的"切蛋糕刀"
javascript
const pizza = ['芝士', '香肠', '蘑菇', '青椒', '洋葱'];
const mySlice = pizza.slice(1, 4); // 切下第2到第4块
console.log(mySlice); // ['香肠', '蘑菇', '青椒']
splice() - 数组的"瑞士军刀"
javascript
const todoList = ['学习JS', '健身', '看电影'];
todoList.splice(1, 1, '学数组方法'); // 替换第二个任务
console.log(todoList); // ['学习JS', '学数组方法', '看电影']
实战演练:一起来玩数组方法!
场景:管理你的游戏好友列表 🎮
javascript
// 初始好友列表
let friends = [
{ name: '小明', level: 25, online: true },
{ name: '小红', level: 30, online: false },
{ name: '小刚', level: 15, online: true },
{ name: '小李', level: 40, online: true }
];
// 1. 找出所有在线的好友
const onlineFriends = friends.filter(friend => friend.online);
console.log('在线好友:', onlineFriends.map(f => f.name));
// 2. 给所有好友升5级
const leveledUp = friends.map(friend => ({
...friend,
level: friend.level + 5
}));
// 3. 找出最高等级的好友
const topPlayer = friends.reduce((top, current) =>
current.level > top.level ? current : top
);
console.log('大佬是:', topPlayer.name);
// 4. 按等级排序
const sortedFriends = [...friends].sort((a, b) => b.level - a.level);
console.log('等级排行榜:', sortedFriends.map(f => `${f.name}: ${f.level}级`));
链式调用:数组方法的"组合技"✨
真正的魔法在这里!你可以把多个方法连起来用:
javascript
const products = [
{ name: '手机', price: 2999, category: '电子' },
{ name: '衬衫', price: 199, category: '服装' },
{ name: '笔记本', price: 5999, category: '电子' },
{ name: '鞋子', price: 399, category: '服装' }
];
// 一行代码完成复杂操作!
const expensiveElectronics = products
.filter(product => product.category === '电子') // 1. 筛选电子产品
.filter(product => product.price > 2000) // 2. 筛选高价商品
.map(product => product.name) // 3. 只取商品名
.join(', '); // 4. 用逗号连接
console.log(`高价电子产品:${expensiveElectronics}`);
// 输出:高价电子产品:手机, 笔记本
小测验:测测你的数组超能力 🧠
javascript
// 挑战:用一行代码解决!
const numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5];
// 任务:去重 → 排序 → 只留大于3的数 → 求和
const result = /* 你的代码写在这里 */;
console.log(result); // 应该输出:20 (4+5+6+9)
参考答案:
javascript
const result = [...new Set(numbers)]
.sort((a, b) => a - b)
.filter(num => num > 3)
.reduce((sum, num) => sum + num, 0);
总结与最佳实践
- 不改变原数组 :优先使用
map、filter、slice等 - 链式调用:让代码更优雅,从左到右阅读
- 方法选择 :
- 想转换 每个元素 →
map() - 想筛选 某些元素 →
filter() - 想检查 条件 →
some()/every() - 想汇总 为单个值 →
reduce()
- 想转换 每个元素 →
记住:数组方法不是记忆负担,而是你的超能力工具箱!每次遇到数组操作问题时,想想:"我的工具箱里有什么合适的工具?"
现在就去你的代码里试试这些超能力吧!你会惊讶地发现,处理数据变得如此轻松愉快。🎉
一句话总结: 数组方法让JavaScript从"能干活"变成"干得漂亮"!