当前位置: 首页 > news >正文

JavaScript基础课程十三、ES6+ 核心语法(三)——数组与对象高级方法

本课聚焦ES6+数组与对象高级方法,是前端处理批量数据的核心技能,彻底告别冗余的for循环,实现代码语义化与高效化。数组高阶方法覆盖遍历、筛选、映射、查找、汇总,可应对各类列表数据处理场景;对象扩展语法简化创建、合并、取值逻辑,适配现代数据结构。本课知识贯穿Vue、React、小程序等全场景开发,是企业级项目必备技能。结合前序解构、箭头函数、DOM操作,可完成高质量的英语单词小程序,实现数据快速处理与页面渲染。掌握本课内容,能大幅提升编码效率与代码质量,为后续模块化、工程化学习筑牢基础。

一、课程学习目的

  1. 掌握ES6+常用数组高级方法,实现遍历、筛选、查找、映射、累加等批量数据处理,告别繁琐for循环。

  2. 熟练运用对象扩展语法,简化对象创建、合并、属性提取逻辑,适配现代JS数据结构。

  3. 理解高阶函数核心思想,结合箭头函数、解构赋值写出简洁规范的批量处理代码。

  4. 衔接前序数组、DOM、英语单词小程序场景,完成数据快速处理与页面渲染。

  5. 养成企业级数据处理思维,提升代码可读性、复用性与执行效率。


二、核心知识点讲解

1. 数组高级方法(核心:遍历/处理/筛选数据)

数组高级方法属于高阶函数,内部封装循环逻辑,只需传入回调函数定义处理规则,代码更简洁、语义化更强,是企业开发处理数组数据的首选,本课聚焦6个高频方法。

  • forEach():遍历数组,无返回值,替代普通for循环,适合批量执行操作。

  • filter():筛选数组,返回符合条件的新数组,不改变原数组,常用于数据过滤。

  • map():映射数组,返回加工后的新数组,适合批量修改/格式化数据。

  • find():查找单个元素,返回第一个符合条件的元素,找不到返回undefined。

  • some():判断是否有符合条件的元素,返回布尔值,只要一个满足即为true。

  • reduce():累加/汇总数组,返回累计结果,适合求和、统计、数组扁平化。

2. ES6+对象扩展语法

(1)属性简写

当对象属性名与变量名一致时,可省略冒号和重复值,直接写变量名,简化对象书写。

(2)方法简写

对象内定义方法时,省略function关键字,直接写方法名+(),代码更紧凑。

(3)扩展运算符…

展开对象/数组,实现快速合并、拷贝,替代繁琐的Object.assign(),不改变原对象。

(4)Object.keys()

获取对象所有属性名,返回数组,方便遍历对象属性。


三、示例程序

示例1:forEach遍历数组(单词批量打印)

// 英语单词数组(贴合课程场景)constwordList=['apple','banana','cat','dog','orange'];// 传统for循环遍历(代码繁琐)for(leti=0;i<wordList.length;i++){console.log(`单词${i+1}${wordList[i]}`);}// ES6 forEach遍历(简洁语义化)// item:当前元素 index:当前索引wordList.forEach((item,index)=>{console.log(`ES6遍历 - 单词${index+1}${item}`);});

示例说明:本示例对比传统循环与forEach的差异,forEach无需手动控制索引,代码更简洁,适合批量打印单词、遍历列表数据等场景,搭配箭头函数使用更符合现代JS规范。

示例2:filter筛选+map映射(单词处理)

constwordList=['apple','banana','cat','dog','orange'];// 1. filter筛选:提取长度>3的单词// 返回新数组,不修改原数组constlongWords=wordList.filter(item=>item.length>3);console.log('长度大于3的单词:',longWords);// 2. map映射:给单词添加中文释义constformatWords=wordList.map(item=>{// 分支判断匹配释义if(item==='apple')return`${item}- 苹果`;if(item==='banana')return`${item}- 香蕉`;if(item==='orange')return`${item}- 橙子`;return`${item}- 未知`;});console.log('格式化后的单词:',formatWords);

示例说明:filter筛选符合条件的数据,map批量格式化数据,二者是前端处理列表数据的核心组合。本示例实现长单词筛选、单词加释义,贴合儿童英语学习场景,可直接用于页面渲染。

示例3:find查找+some判断+reduce求和

constwordList=['apple','banana','cat','dog','orange'];// 单词分数数组constscoreList=[90,85,70,95,88];// 1. find查找:找到第一个包含'a'的单词consttargetWord=wordList.find(item=>item.includes('a'));console.log('第一个含a的单词:',targetWord);// 2. some判断:是否有长度<4的单词consthasShortWord=wordList.some(item=>item.length<4);console.log('是否存在短单词:',hasShortWord);// 3. reduce求和:计算总分// total:累计值 item:当前值 0:初始值consttotalScore=scoreList.reduce((total,item)=>total+item,0);console.log('单词测试总分:',totalScore);

示例说明:本示例整合三个高频数组方法,find精准查找单个元素,some快速判断条件,reduce实现数据汇总。结合单词查找、分数统计场景,覆盖前端数据处理核心需求,代码逻辑清晰、效率更高。

示例4:对象扩展语法(属性/方法简写+扩展运算符)

// 基础变量consten='pear';constcn='梨';constlevel=1;// 1. 对象属性简写+方法简写constwordObj={// 属性简写:变量名=属性名en,cn,level,// 方法简写:省略functionshowInfo(){// 箭头函数无this,此处用普通方法console.log(`单词:${this.en},释义:${this.cn}`);}};// 调用对象方法wordObj.showInfo();// 2. 对象扩展运算符:合并对象constbaseInfo={type:'名词'};// 展开两个对象,实现合并constfullWordObj={...wordObj,...baseInfo,tag:'基础词汇'};console.log('完整单词对象:',fullWordObj);// 3. Object.keys获取属性名constkeys=Object.keys(fullWordObj);console.log('单词对象属性名:',keys);

示例说明:本示例讲解对象四大扩展语法,简化对象创建、方法定义、合并逻辑。扩展运算符可快速拷贝/合并对象,避免原对象被篡改;Object.keys方便遍历对象属性,适配单词对象、配置对象等场景。

示例5:综合实战(数组方法+DOM渲染)

// 单词对象数组constwordData=[{en:'apple',cn:'苹果',score:90},{en:'banana',cn:'香蕉',score:85},{en:'cat',cn:'小猫',score:70}];// 获取页面容器constbox=document.getElementById('wordBox');// map映射+模板字符串渲染DOMconsthtml=wordData.map(item=>`<div style="margin:10px;padding:10px;border:1px solid #ccc;"> <p>英文:${item.en}</p> <p>中文:${item.cn}</p> <p>分数:${item.score}</p> </div>`).join('');// join转为字符串// 渲染到页面box.innerHTML=html;

示例说明:本课核心综合案例,结合数组map方法、模板字符串、DOM操作,将单词数组批量渲染到页面,完全贴合儿童英语小程序实战,是企业前端开发的标准写法。


四、掌握技巧与方法

  1. 单纯遍历数组用forEach,筛选数据用filter,格式化数据用map,查找单个用find

  2. 数组高级方法均不改变原数组,返回新数组/结果,数据更安全。

  3. 对象优先用属性简写、方法简写,合并/拷贝用扩展运算符…,简洁高效。

  4. reduce初始值建议必传,避免空数组报错,累加/统计更稳定。

  5. 数组方法可链式调用(如filter+map),简化代码结构。

  6. 结合箭头函数、解构赋值使用,代码更精简,符合现代JS规范。


五、课后作业

基础必做作业

  1. 定义数字数组[12,5,8,20,3],用forEach遍历打印每个数字。

  2. 用filter筛选上述数组中大于10的数字,输出结果。

  3. 用map给单词数组[‘pig’,‘duck’]添加中文释义,返回格式化数组。

进阶必做作业

  1. 用find查找单词数组中第一个长度为3的单词,测试找不到的场景。

  2. 用reduce计算数字数组[15,25,10,30]的总和。

  3. 定义单词对象,使用属性简写、方法简写,并调用方法。

实战场景作业

  1. 儿童英语单词筛选器:
  • 定义包含英文、中文、难度的单词对象数组。

  • 用filter筛选难度为1的基础单词。

  • 用map格式化数据,结合模板字符串渲染到DOM。

  • 用some判断是否存在难度为3的高阶单词,输出判断结果。


ES6+核心语法(二)——解构与字符串 实战作业代码

作业核心考点:数组解构、对象解构、解构默认值、模板字符串、字符串扩展方法,沿用儿童英语单词学习场景,HTML+JS合一,浏览器直接运行,覆盖基础+进阶+综合实战要求。


上一课作业答案:代码功能说明

本代码是适配课程十二ES6+解构与字符串语法的英语单词展示工具,采用HTML+JS整合编写,可直接运行。通过数组解构批量提取单词数据,对象解构快速解析单词对象属性,搭配解构默认值防止数据缺失报错;利用模板字符串实现变量插入与换行渲染,替代传统拼接;调用includes、trim、startsWith等字符串方法,完成单词校验、文本清理、前缀判断等功能。点击按钮可触发解构取值、字符串处理、页面渲染全流程,直观展示解构简化取值、字符串扩展优化交互的优势,贴合零基础实操,全程紧扣本课核心考点。

完整实战代码

<!DOCTYPEhtml><htmllang="zh-CN"><head><metacharset="UTF-8"><title>课程十二 ES6+解构与字符串实战 - 单词工具</title><style>*{margin:0;padding:0;box-sizing:border-box;font-family:"Microsoft YaHei";}.container{width:650px;margin:60px auto;padding:25px;border:1px solid #f0f0f0;border-radius:10px;box-shadow:0 0 10pxrgba(0,0,0,0.05);}.title{text-align:center;margin-bottom:20px;color:#333;}.operate-btn{padding:8px 18px;margin:10px 5px;background:#42b983;color:#fff;border:none;border-radius:5px;cursor:pointer;}.show-box{margin-top:25px;padding:15px;line-height:2;border-top:1px dashed #eee;}.item{margin:5px 0;padding:5px 10px;background:#f9f9f9;border-radius:4px;}</style></head><body><divclass="container"><h2class="title">英语单词解构展示器</h2><buttonclass="operate-btn"id="deconstructBtn">解构取值+渲染</button><buttonclass="operate-btn"id="stringBtn">字符串方法校验</button><divclass="show-box"id="showBox"></div></div><script>// 基础数据:单词数组、单词对象(嵌套结构)constwordArr=['cat','小猫',1];constwordObj={en:'banana',cn:'香蕉',level:2,// 嵌套对象info:{type:'名词',master:'水果类'}};// 带空格的待处理文本consttrimStr=' apple 苹果 初级 ';constshowBox=document.getElementById('showBox');// 1. 解构取值+模板字符串渲染document.getElementById('deconstructBtn').onclick=()=>{// 数组解构 + 默认值const[wEn,wCn,wLevel=1]=wordArr;// 对象解构 + 嵌套解构 + 默认值const{en,cn,level=2,info:{type,master}}=wordObj;// 模板字符串拼接渲染(支持换行)consthtml=`<div class="item">数组解构:英文=${wEn},中文=${wCn},等级=${wLevel}</div> <div class="item">对象解构:英文=${en},中文=${cn},等级=${level}</div> <div class="item">嵌套解构:词性=${type},分类=${master}</div>`;showBox.innerHTML=html;};// 2. 字符串扩展方法实战document.getElementById('stringBtn').onclick=()=>{// 去除两端空格constnewTrimStr=trimStr.trim();// 判断是否包含指定字符consthasApple=newTrimStr.includes('apple');// 判断是否以指定字符开头conststartWith=newTrimStr.startsWith('apple');// 模板字符串展示结果consthtml=`<div class="item">原字符串:${trimStr}(含空格)</div> <div class="item">去空格后:${newTrimStr}</div> <div class="item">是否包含apple:${hasApple}</div> <div class="item">是否以apple开头:${startWith}</div>`;showBox.innerHTML=html;};</script></body># 课程十二</html>

作业验收标准

  1. 点击解构按钮,正常展示数组、对象、嵌套解构的取值结果,无undefined异常

  2. 点击字符串按钮,正确执行去空格、包含判断、开头判断,结果精准

  3. 全程使用模板字符串渲染,无传统+拼接,语法规范无报错

  4. 解构默认值生效,缺失数据时不报错,页面展示正常

  5. 代码注释清晰,结构分明,贴合本课解构与字符串核心考点

作业拓展要求(进阶)

新增嵌套数组解构功能,结合endsWith方法判断单词后缀,并用模板字符串渲染拓展结果,强化本课语法综合运用能力。

注意事项

  • 数组解构按元素顺序匹配,对象解构按属性名匹配,名称不一致会取值undefined

  • 解构不确定是否有值时,务必设置默认值,避免页面渲染空白或控制台报错

  • 模板字符串使用反引号``,变量通过${}插入,支持直接换行,勿误用单双引号

  • 字符串扩展方法返回新值,不会修改原字符串,需接收赋值后使用

  • 嵌套解构层级要对应,避免语法错误,代码保持缩进规范便于排查问题


http://www.jsqmd.com/news/500384/

相关文章:

  • 2025年年终总结之17.教育之文化的意义
  • LangChain4j AI Services 深度解析:声明式 API 与接口驱动开发
  • 企业私域运营全指南:从 0 到 10 万用户,可复制的全链路实操手册
  • 部署EasyVoice实现文字转语音
  • 2026山西继承纠纷有名律师选购要注意什么 - myqiye
  • 九、硬件要求
  • localStorage vs sessionStorage
  • 伴侣间的信任感被破坏后,如何重建与修复?
  • ENVI直接打开Landsat的C2L2数据(landsat5/8/9)
  • Linux传输层TCP,UDP相关内容
  • SEO_避开这些常见误区,让你的SEO事半功倍(435 )
  • 聊聊银川面部祛痣专业机构,费用大概多少钱? - 工业推荐榜
  • 京东e卡回收哪家强?深度解析热门回收渠道优劣 - 团团收购物卡回收
  • 觉得360讨厌?想卸载?那是你不会用
  • openclaw[龙虾]禁用版本升级提示
  • UL4200A认证全流程:从申请到证书获取
  • 网络编程第一天学习笔记(重点:UDP 协议)
  • 【全网唯一】第一篇 我要创造一门全新中文编程语言——华夏本源语言
  • 2026年壁挂新风系统选购指南:8款主流品牌深度横评 - 新闻快传
  • 探讨2026年深圳GH4169镍基合金钢板性价比,哪家更优? - 工业品网
  • 讲讲GH4169镍基合金费用,深圳地区哪家收费合理? - 工业品牌热点
  • 2026-3-18
  • neo4j知识图谱+大模型教育应用赋能教育技术学专业
  • 注意!选择京东e卡回收渠道前需要了解的3个技巧 - 团团收购物卡回收
  • Anaconda被误删后抢救手册
  • 2026年新风系统推荐:第五季凭什么入选TOP5 - 新闻快传
  • 【claude code】基于java+springboot的校园餐厅点餐网站、外卖点餐管理系统
  • 从“亡羊补牢”到“规则先行”:金仓数据库的主动防御之道
  • ArkUI 为什么看起来简单,却很难写好
  • 3月19日直播丨加速开发,释放生产力的必备利器!