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

javascript数组 forEach,filter,some,every,map,find,reduce的用法与区别

forEach等同于for循环循环遍历数组中的每个元素并将元素传递给回调方法。let arr [1,2,3,4,5] let a arr.forEach((val,index){ arr[index] 1 return index }) console.log(a) //undefined console.log(arr) // [2, 3, 4, 5, 6]map主要功能是可以将一个数组中的元素转换为另外一种数据格式并返回一个新的数组也就是投影操作。let arr [1,2,3,4,5] let arr1 arr.map((val,index){ return arr[index] 1 }) console.log(arr) //[1,2,3,4,5] console.log(arr1) //[2, 3, 4, 5, 6]map与forEach的区别就是forEach没有返回值即使return,它的返回值也只会是undefined;map的所有返回值会组成一个新的数组find、findIndex、indexOffind()主要功能用于查找符合指定条件的第一个数组元素并返回该元素。如果没有找到匹配的元素则返回undefined。注意这里返回的是一个元素对象filter()返回的是数组。let arr [1,2,3,4,5] let find1 arr.find((val,index){ return val1 }) console.log(find1) // 2 //find() const numbers [1, 3, 5, 7, 9]; const result numbers.find(num num 6); console.log(result); // 返回符合条件的值7 //findIndex() const numbers [1, 3, 5, 7, 9]; const result numbers.findIndex(num num 6); console.log(result); // 返回符合条件值的索引3 //indexOf() const numbers [1, 3, 5, 7, 9]; const result numbers.indexOf(7); console.log(result); // 返回某一特定值所在数组里面的索引3相同find与some 的用法类似都是在数组中查找符合条件的值且当找到符合的值便会停止往后遍历。区别some返回的值是布尔型而find返回的是具体的值。filter主要的功能是根据一定条件过滤数组数据。具体实现将数组中的每个元素传递给一个回调函数经过设定的逻辑处理返回一个布尔值过滤相关的元素。最终返回一个新的数组。注意的是该方法不会对空数组进行检测、不会改变原始数组let arr [1,2,3,4,5] let filter1 arr.filter((val,index){ return val1 }) console.log(filter1) //[2,3,4,5]every判断数组中所有元素是否满足条件满足则返回true。let arr [1,2,3,4,5] let every1 arr.every((val,index){ return val0 }) console.log(every1) //true let every2 arr.every((val,index){ return val1 }) console.log(every2) //falsesome判断数组中是否有元素满足条件只要有一条满足则返回true。let arr [1,2,3,4,5] let some1 arr.some((val,index){ return val1 }) console.log(some1) //true let some2 arr.some((val,index){ return val6 }) console.log(some2) //falsereduce若数组元素为数字则会求数组中所有元素的总和若数组元素为字符则会将所有字符拼合在一起let arr [1,2,3,4,5] let arrString [one,two,three,four,five] let sum1 arr.reduce((item,val){ return itemval }) let sum2 arrString.reduce((item,val){ return itemval }) console.log(sum1) //15 console.log(sum2) //onetwothreefourfivefor in 、for offor inES1for in和for循环方式历史悠久从ECMAScript 1就被支持。for in 用来循环数组不是一个合适的选择。迭代的是属性key不是值。由于属性 key 是字符串迭代出的元素索引是 string,不是 number不能直接进行运算如下var arr [1,2,3] for (let index in arr) { let res index 1 console.log(res) } //01 11 21for ofES6再来说说ES6 中的 for offor of遍历的是数组元素值而且for of遍历的只是数组内的元素不包括原型属性和索引var arr [1,2,3] arr.a 123 Array.prototype.a 123 for (let value of arr) { console.log(value) } //1 2 3for of适用遍历数/数组对象/字符串/map/set等拥有迭代器对象iterator的集合 但是不能遍历对象因为没有迭代器对象。但如果想遍历对象的属性你可以用for in循环这也是它的本职工作或用内建的Object.keys()方法var myObject{ a:1, b:2, c:3 } for (var key of Object.keys(myObject)) { console.log(key : myObject[key]); } //a:1 b:2 c:3
http://www.rkmt.cn/news/1395713.html

相关文章:

  • 【案例实战】财务报销自动化:读取发票图片并通过网页自动填报 OA 系统
  • 测试ADS1244对应的ADC的基本特性
  • 虚拟电表645MeterV2.7.1的INI文件全解析:从串口配置到电表参数,一篇搞定你的调试难题
  • 告别手动点点点:用dSPACE AutomationDesk的COM API实现ControlDesk自动化测试
  • AI导演工坊 · 用角色扮演Agent编排让复杂任务自动化
  • Modelsim SE-64 2020.4仿真不出波形?别慌,这个优化选项的坑我帮你踩了
  • 9.9 元 AI 班宠爆火:游戏化教育新尝试,能否解决师生痛点?
  • 物流行业AI Agent应用:路径优化与库存管理的效率革命
  • 保姆级教程:在PSIM中手把手搭建IPMSM方波注入无感FOC仿真(附极性判断避坑指南)
  • 别信公开付费榜单!2026 年 5 月 GEO 服务商内部实测排名 - 资讯纵览
  • 性能测试从入门到精通,我踩过的10个坑全记录
  • iNav固件编译踩坑实录:解决‘CMake was not initialized yet’等常见错误
  • ESP32+MAX30102心率血氧DIY:手把手教你用两块I2C设备,解决引脚冲突(附完整代码)
  • LP3798SC 九重保护全解析:触发条件 + 恢复机制 + 设计避坑
  • 怎样3步完成QQ音乐加密格式转换:智能解密工具实战指南
  • BACnet网络层协议控制信息(NPCI)深度解析:从比特位到网络报文
  • 华为发布“韬(τ)定律”,预计2031年高端芯片晶体管密度达1.4纳米水平
  • YOLOv8杂草识别检测系统(项目源码+YOLO数据集+模型权重+UI界面+python+深度学习+环境配置)
  • Playwright多语言实战:一份Python+Java的跨浏览器自动化测试配置清单
  • Simulink模块搭建vsS函数:为什么你的控制器跟踪正弦信号总有残余误差?
  • 基于Transformer的稀疏结构感知:CraterSense实现月球自主导航新突破
  • 数据密集型软件研究商业化:从算法到产品的最后一公里实践
  • AV1与VVC视频编码的算法优化与硬件设计实战解析
  • 从数据清洗到SVD实战:构建一个高效的Python音乐推荐引擎
  • m4s-converter实战:B站缓存视频高效转换完整方案
  • 2026年5月唐山地区黄金回收白银铂金回收甄选门店推荐TOP1 地址及联系方式 - 五金回收
  • CC2745R10-Q1蓝牙6.0模块实现车载厘米级精准测距
  • 2026年5月天津地区黄金回收白银铂金回收甄选门店推荐TOP1 地址及联系方式 - 五金回收
  • 全覆盖通讯导航测风雷达:野外风电应用方案
  • 2026小红书视频解析在线提取方法,免费提取工具实测推荐