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

前端for循环遍历——foreach、map使用


title: 前端不同类型的for循环遍历——foreach、map
date: 2025-01-04 11:02:17
tags: javascript

前端不同类型的for循环遍历

场景:很多时候后端发来的数据是不能够完全契合前端的需求的,比如你要一个数据对象中的值,但是这个值却作为了key出现;比如你要通过一个数组中的对象的某个属性来确定到底取哪个对象。

一、for与foreach

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><script>// 计算for循环遍历所需要的相关的时间的长短let arrs = [...Array(99999999).keys()]let total = 0let time = 0let starTime = Date.now()for (let index = 0; index < arrs.length; index++) {total++}let endTime = Date.now();time = endTime-starTime;console.log("for循环遍历共计消耗时间:"+ time+"ms");total = 0starTime = Date.now()arrs.forEach(element => {total++});endTime = Date.now();time = endTime-starTime;console.log("foreach循环遍历共计消耗时间:"+ time+"ms");</script>
</body>
</html>

发现两种遍历的效率还是差距挺大的,具体如下测试结果。

注意:

.forEach()方法是不支持break这种结束方法,但是他支持return进行结束

.forEach()方法不支持异步等待,他会直接跳过当中的异步同步化(async、await)请求操作。

二、map

1.基础遍历

使用.map方法可以帮助遍历数组,同时可以得到数组的元素、下标、还有当前数组本身

let arr = [1,2,3,4,5,6];
arr.map((item,index,arr)=>{console.log(item,index,arr);
})

2.简单生成新数组

return是每次返回一个子元素(假如只有一行简单的代码,也可以去掉return),就不用复杂push操作。

 let arr = [1,2,3,4,5,6];//item表示当前的元素,index表示下标,arr当前数组的的相关数据let  newArr = arr.map(item=>{return item*2})//2,4,6,8,10,12console.log(newArr);

3.清洗对象数组数据

操作数组对象中的相关数据,可用于清洗数据

let arr = [{name:"张三",age:18},{name:"李四",age:22},{name:"王五",age:23},]
let newArr = arr.map(item=>{return item.name})//可以仅遍历出了自己想要的属性的数组console.log(newArr); // ['张三', '李四', '王五']

4.在数组对象中追加属性、更改属性值

…三个点属于es6新特性,就是用来展开对象中的所有属性的简写,我们是可以复写相关的属性的,不影响使用。

 let arr = [{name:"张三",age:18},{name:"李四",age:22},{name:"王五",age:23},]let newArr = arr.map(item=>{return {...item,//es6新语法添加所有属性age:`${item.age}`,//更改值class:1 //添加新属性方法}})console.log(newArr);

简写方法 ,不写return的时候的加上一个小括号来包裹相关的属性。

 let newArr = arr.map(item=>({...item,age:`${item.age}`,class:1}))

相关的结果如下所示

5.进行属性名称的解构替换

假如说我们要将name这个属性名称改成uname,可以使用map进行相关的解构替换。这样直接使用一个{属性},可以直接使用,不用再使用item进行相关的调用。

let arr = [{name:"张三",age:18},{name:"李四",age:22},{name:"王五",age:23},]
let newArr = arr.map(({name,age})=>{return{ uname:name,ages:age}})
console.log(newArr);

6.异步请求,同时展示优化

很多时候起哦们去要请求后端接口拿到数据,但是请求接口是异步请求,但是又有相关的需求要同时展示,这个时候就可以利用map添加参数进行异步请求同步化,再使用promise.all一次处理相关的所有数据。


http://www.mrgr.cn/news/83276.html

相关文章:

  • 拯救者Y9000P双系统ubuntu22.04安装4070显卡驱动
  • iPhone 在华销量大幅下挫
  • YouBIP 项目
  • DEEPSEEK与GPT等AI技术在机床数据采集与数字化转型中的应用与影响
  • J2打卡——ResNet50V2实现鸟类识别
  • 一步一步生成音乐类小程序的详细指南,结合AI辅助开发的思路
  • CSS基础入门
  • 设计模式 行为型 状态模式(State Pattern)与 常见技术框架应用 解析
  • vue3 面试题:vue3和vue2有什么区别?
  • uniapp 微信小程序内嵌h5实时通信
  • MatLab基本语法
  • Freemarker-语法笔记
  • 单例模式-如何保证全局唯一性?
  • 前端前置知识
  • Scala分布式语言二(基础功能搭建、面向对象基础、面向对象高级、异常、集合)
  • 【阅读笔记】消化内镜入门及规范操作
  • vue video重复视频 设置 srcObject 视频流不占用资源 减少资源浪费
  • Leetcode 221. 最大正方形 动态规划
  • MiniFilter文件过滤
  • 静态路由配置与调试——计算机网络实训day1
  • [QCustomPlot] 交互示例 Interaction Example
  • SAP-FICO 标准价格与移动平均价格
  • NLP中常见的分词算法(BPE、WordPiece、Unigram、SentencePiece)
  • 音频数据增强:提升音频信号质量的多种技术
  • Open WebUI 与 AnythingLLM 安装部署
  • Docker compose 使用 --force-recreate --no-recreate 控制重启容器时的行为