news 2026/4/3 5:44:49

给数组装上超能力:JavaScript数组方法趣味指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
给数组装上超能力:JavaScript数组方法趣味指南

欢迎使用我的小程序👇👇👇👇 俱好用助手功能介绍


你是否曾感觉JavaScript数组像个装满数据的“沉默集装箱”?今天,我们来给它装上超能力!🚀

为什么数组方法如此重要?

想象一下,你有一个装满各种颜色袜子的抽屉(数组)。现在你想:

  • 找出所有红色的袜子
  • 把袜子按颜色分类
  • 检查是否有成对的袜子
  • 把脏袜子拿出来洗

如果没有数组方法,你得把手伸进抽屉里一件件翻找。但有了数组方法——就像拥有了一个智能机器人助手!🤖

四大类数组方法,轻松掌握

1️⃣ 查户口类:了解数组的“家庭情况”

length- 数组的“身高测量”

constfruits=['苹果','香蕉','橙子'];console.log(fruits.length);// 3,就像数水果篮里有几个水果

includes()- 数组的“人脸识别”

constplaylist=['周杰伦','林俊杰','邓紫棋'];console.log(playlist.includes('周杰伦'));// true,确认偶像在歌单里

indexOf()findIndex()- 数组的“捉迷藏专家”

conststudents=['小明','小红','小刚'];console.log(students.indexOf('小红'));// 1,小红坐在第二个位置constscores=[85,92,78];constfirstFail=scores.findIndex(score=>score<80);console.log(firstFail);// 2,找到第一个不及格的同学

2️⃣ 变戏法类:改变数组的“魔术师”

map()- 数组的“变形金刚”⭐最常用!

constprices=[10,20,30];constdiscounted=prices.map(price=>price*0.8);// 全场八折!console.log(discounted);// [8, 16, 24]

forEach()- 数组的“广播喇叭”

consttasks=['写代码','喝咖啡','修bug'];tasks.forEach(task=>console.log(`正在:${task}`));// 依次播报每项任务

reduce()- 数组的“会计先生”⭐有点难但超有用!

constshoppingCart=[100,50,25];consttotal=shoppingCart.reduce((sum,price)=>sum+price,0);console.log(total);// 175,计算购物车总价

3️⃣ 大扫除类:整理数组的“清洁工”

filter()- 数组的“筛子”⭐五星推荐!

constnumbers=[1,2,3,4,5,6];constevens=numbers.filter(num=>num%2===0);console.log(evens);// [2, 4, 6],只留下偶数

slice()- 数组的“切蛋糕刀”

constpizza=['芝士','香肠','蘑菇','青椒','洋葱'];constmySlice=pizza.slice(1,4);// 切下第2到第4块console.log(mySlice);// ['香肠', '蘑菇', '青椒']

splice()- 数组的“瑞士军刀”

consttodoList=['学习JS','健身','看电影'];todoList.splice(1,1,'学数组方法');// 替换第二个任务console.log(todoList);// ['学习JS', '学数组方法', '看电影']

实战演练:一起来玩数组方法!

场景:管理你的游戏好友列表 🎮

// 初始好友列表letfriends=[{name:'小明',level:25,online:true},{name:'小红',level:30,online:false},{name:'小刚',level:15,online:true},{name:'小李',level:40,online:true}];// 1. 找出所有在线的好友constonlineFriends=friends.filter(friend=>friend.online);console.log('在线好友:',onlineFriends.map(f=>f.name));// 2. 给所有好友升5级constleveledUp=friends.map(friend=>({...friend,level:friend.level+5}));// 3. 找出最高等级的好友consttopPlayer=friends.reduce((top,current)=>current.level>top.level?current:top);console.log('大佬是:',topPlayer.name);// 4. 按等级排序constsortedFriends=[...friends].sort((a,b)=>b.level-a.level);console.log('等级排行榜:',sortedFriends.map(f=>`${f.name}:${f.level}`));

链式调用:数组方法的“组合技”✨

真正的魔法在这里!你可以把多个方法连起来用:

constproducts=[{name:'手机',price:2999,category:'电子'},{name:'衬衫',price:199,category:'服装'},{name:'笔记本',price:5999,category:'电子'},{name:'鞋子',price:399,category:'服装'}];// 一行代码完成复杂操作!constexpensiveElectronics=products.filter(product=>product.category==='电子')// 1. 筛选电子产品.filter(product=>product.price>2000)// 2. 筛选高价商品.map(product=>product.name)// 3. 只取商品名.join(', ');// 4. 用逗号连接console.log(`高价电子产品:${expensiveElectronics}`);// 输出:高价电子产品:手机, 笔记本

小测验:测测你的数组超能力 🧠

// 挑战:用一行代码解决!constnumbers=[3,1,4,1,5,9,2,6,5];// 任务:去重 → 排序 → 只留大于3的数 → 求和constresult=/* 你的代码写在这里 */;console.log(result);// 应该输出:20 (4+5+6+9)

参考答案:

constresult=[...newSet(numbers)].sort((a,b)=>a-b).filter(num=>num>3).reduce((sum,num)=>sum+num,0);

总结与最佳实践

  1. 不改变原数组:优先使用mapfilterslice
  2. 链式调用:让代码更优雅,从左到右阅读
  3. 方法选择
    • 转换每个元素 →map()
    • 筛选某些元素 →filter()
    • 检查条件 →some()/every()
    • 汇总为单个值 →reduce()

记住:数组方法不是记忆负担,而是你的超能力工具箱!每次遇到数组操作问题时,想想:“我的工具箱里有什么合适的工具?”

现在就去你的代码里试试这些超能力吧!你会惊讶地发现,处理数据变得如此轻松愉快。🎉

一句话总结:数组方法让JavaScript从“能干活”变成“干得漂亮”!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/1 17:48:10

flink的一阶段提交的流程

Flink的一阶段提交流程 Apache Flink 是一个分布式流处理框架,用于高效处理大规模数据流。在 Flink 中,“提交”通常指将作业部署到集群执行的过程。用户提到的“一阶段提交”可能指的是 Flink 中某些特定场景下的简化提交机制,尤其是在事务处理或 Sink 端(输出端)的 Exa…

作者头像 李华
网站建设 2026/3/27 22:41:19

vue基于springboot的教学辅助课堂学生考勤签到作业提交管理系统

目录已开发项目效果实现截图开发技术介绍系统开发工具&#xff1a;核心代码参考示例1.建立用户稀疏矩阵&#xff0c;用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&…

作者头像 李华
网站建设 2026/3/28 19:16:47

为什么windows长期运行可能出现内存泄漏或蓝屏?

一、为什么 Windows 长期运行可能出现 内存泄漏&#xff1f;1. 用户态与内核态分离不彻底虽然 Windows 有用户态&#xff08;User Mode&#xff09;和内核态&#xff08;Kernel Mode&#xff09;的区分&#xff0c;但很多功能&#xff08;如图形子系统、部分驱动&#xff09;仍…

作者头像 李华
网站建设 2026/3/24 22:36:50

47_Spring AI 干货笔记之图像模型 API

一、图像模型 API Spring 图像模型 API 旨在提供一个简单且可移植的接口&#xff0c;用于与专注于图像生成的各种 AI 模型 交互&#xff0c;使开发人员能够以最少的代码更改在不同图像相关模型之间切换。这种设计符合 Spring 的模块化和可互换性理念&#xff0c;确保开发人员能…

作者头像 李华
网站建设 2026/3/23 3:13:28

keithley2601A数字源表/ 吉时利2601A说明书

吉时利Keithley 2601A数字源表是吉时利的I-V源-测量仪器&#xff0c;既可以用作桌面级I-V特性分析工具&#xff0c;Keithley 2602A也可以成为多通道I-V测试系统的组成部分。对于桌面级的应用&#xff0c;2600A系列提供一款嵌入式TSP? Express测试软件&#xff0c;允许用户快速…

作者头像 李华
网站建设 2026/3/31 8:58:23

第35章 Shell 结合curl实现接口测试:GET/POST请求+响应解析

35.1 接口测试概述 接口测试是Web开发和运维中的重要环节,Shell结合curl可以构建强大的自动化测试工具: 35.1.1 应用场景 API功能测试:验证接口功能正确性 性能测试:测试接口响应时间和并发能力 监控告警:实时监控接口可用性 自动化部署:部署后验证接口状态 批量测试:…

作者头像 李华