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

学习:各种不同类型的for循环遍历,forEach/map/filter/every/some/includes/reduce的详细用法(1)

2025最新前端学习路线(新手入门->全栈进阶)-CSDN博客

https://www.bilibili.com/video/BV12c411k7sv/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=dc9934dadcb14416025bad748d3f42cd

各种类型的for循环遍历,forEach/map/filter/for...in/for....of/every/some/includes/reduce/find的详细用法_for pair in filter-CSDN博客

1.for循环和forEach循环的性能及异步同步化差异

for循环

  • 性能更高:传统的for循环(包括for...of)通常比forEach有更好的性能

  • 原因

    • for循环是语言基本结构,没有函数调用开销

    • forEach每次迭代都是一个函数调用,有额外的堆栈操作

  • 适用场景:大数据量或对性能要求高的循环

forEach

  • 更简洁:函数式编程风格,代码更易读

  • 性能稍低:由于是数组方法,每次迭代都涉及函数调用

  • 适用场景:小数据量或代码可读性优先的情况

<script setup>let arrs = [...Array(9999999).keys()]// console.log("数组" + arrs);let total = 0;// 开始时间let startTime = Date.now();// arrs.forEach(item => {// 	if (item == 10) return;// 	total += item;// })for(let i=0; i<arrs.length; i++){if(i==10) break;total+=i;}// 结束时间let endTime = Date.now();let countTime = endTime - startTime;console.log("计数---->" + total);console.log("消耗时间---->" + countTime);
</script>
<template><view class=""></view>
</template>
<style lang="scss" scoped></style>

for

forEach

异步处理差异

for循环

  • 支持异步:可以配合async/await实现同步化异步操作

forEach

  • 不支持同步化异步:即使使用async函数,forEach会并行执行所有异步操作

2.map()方法循环遍历清洗数据和Promise.all组合

Array.prototype.map() - JavaScript | MDN

之前的方式

	let arrs = [1, 2, 3, 4];let newArrs = [];arrs.forEach(item => {newArrs.push(item * 2)})console.log(newArrs);

map方法

let arrs = [1, 2, 3, 4];let newArrs = arrs.map(item => item * 2)console.log(newArrs);

数组对象

	// 数组对象let arrs = [{name:"华为",price:6999},{name:"苹果",price:9888},{name:"小米",price:4999}]let newArrs =  arrs.map(item=>{return item.name})console.log(newArrs);

解构,原有price:6999改为price:“6999元”,并且新增number属性值为888

	let arrs = [{name:"华为",price:6999},{name:"苹果",price:9888},{name:"小米",price:4999}]let newArrs = arrs.map(item=>({...item,price:item.price+"元",number:888}))console.log(newArrs);

将原数组中属性进行更换

	let arrs = [{key:0,content:"篮球"},{key:1,content:"足球"},{key:2,content:"排球"}];let newArrs = arrs.map(({key,content})=>{return {value:key,text:content}})console.log(newArrs);

for循环异步同步化出现的网络请求状态

将异步请求map到新数组中,使用Promise.all同事处理多个Promise

3.filter()过滤方法及map链式调用应用

Array.prototype.filter() - JavaScript | MDN

Array.prototype.indexOf() - JavaScript | MDN

filter和map组合使用,可以使用链式写法

4.reduce()方法求和_求积_最大值_最小值_平均值用法

Array.prototype.reduce() - JavaScript | MDN

求和

http://www.xdnf.cn/news/18103.html

相关文章:

  • 【项目】分布式Json-RPC框架 - 项目介绍与前置知识准备
  • [Linux]学习笔记系列 --[mm][list_lru]
  • Redis-缓存-穿透-布隆过滤器
  • 测试Windows10IoT系统是否可以正常运行KingSCSDA3.8软件
  • Transformer架构的数学本质:从注意力机制到大模型时代的技术内核
  • 蓝凌EKP产品:JSP 性能优化和 JSTL/EL要点检查列表
  • Excel 表格数据自动填充
  • C语言私人学习笔记分享
  • Canny边缘检测
  • pyecharts可视化图表组合组件_Grid:打造专业数据仪表盘
  • python pandas库 series如何使用
  • 电脑上搭建HTTP服务器在局域网内其它客户端无法访问的解决方案
  • 【Tech Arch】Hive技术解析:大数据仓库的SQL桥梁
  • 【从零开始学习Redis】项目实战-黑马点评D2
  • Conda 环境 在AI 私有化部署 有怎么用?
  • 迅速掌握Git通用指令
  • C++内存模型
  • 数据结构代码分享-1 顺序表
  • Redis面试精讲 Day 23:Redis与数据库数据一致性保障
  • Python 设计模式详解 —— 掌握软件设计的通用解决方案
  • 常用的SQL语句
  • ReactNode 类型
  • Java学习笔记:IDEA简单使用技巧
  • 使用vscode的task.json来自动执行make命令,而不直接使用终端
  • Eclipse Tomcat Configuration
  • 基于Python的旅游推荐系统 Python+Django+Vue.js
  • 【抽象类和接口】
  • Javascript面试题及详细答案150道之(106-120)
  • HAL-USART配置
  • 数据电台询价的询价要求