多个独立的forEach循环, 内部处理条件是一样,代码优化方案
工作中遇到了一个问题,多个独立的 forEach 循环, 内部处理条件是一样,于是乎就写出了这样子的一段代码:
第一阶段: 最Low的实现方式
value.logo.forEach(v => {v.size = v.response.file.iSize,v.imgKey = v.response.file.sKey,v.imgExt = v.response.file.sExt,v.channel = 1});value.licensePics.forEach(v => {v.size = v.response.file.iSize,v.imgKey = v.response.file.sKey,v.imgExt = v.response.file.sExt,v.channel = 1});value.identityPic.forEach(v => {v.size = v.response.file.iSize,v.imgKey = v.response.file.sKey,v.imgExt = v.response.file.sExt,v.channel = 1});
上面的代码看起来很冗余,因为每个forEach里面都有相同的代码。所以我进行这样子的优化:
第二阶段: 升级的实现方式
在最外面定义了一个函数:
let getPictures = (v) => {v.size = v.response.file.iSizev.imgKey = v.response.file.sKeyv.imgExt = v.response.file.sExtv.channel = 1
}
然后调用的时候,每次讲要遍历的值传递给一个公共的函数进行处理~ 代码如下:
value.logo.map((v, k) => {getPictures(v)})value.licensePics.map((v, k) => {getPictures(v)})value.identityPic.map((v, k) => {getPictures(v)})
第三阶段: 采用ES6继续升级的实现方式
if (param.logo && param.logo.length) {param.logo = param.logo.map(pic => getPictures(pic));
}if (param.licensePics && param.licensePics.length) {param.licensePics = param.licensePics.map(pic => getPictures(pic));
}if (param.identityPic && param.identityPic.length) {param.identityPic = param.identityPic.map(pic => getPictures(pic));
}
判断数组是否为空,做兼容处理。
假设数组里面有 iSize, sKey, sExt 三个字段:
let getPictures = (v) => {let { iSize, sKey, sExt } = v.response.file;return { size: iSize, imgKey: sKey, imgExt: sExt, channel: 1 };
}
采用ES6的赋值方式来进行赋值~
多个独立的forEach循环, 内部处理条件是一样,代码优化方案相关推荐
- java for循环迭代_JAVA中的for-each循环与迭代
在学习java中的collection时注意到,collection层次的根接口Collection实现了Iterable接口(位于java.lang包中),实现这个接口允许对象成为 "fo ...
- php的foreach循环执行过程分析以及循环中执行unset()的一些问题
文章目录 一.前言 二.foreach的执行过程 1.关于版本不同的foreach变化 2.关于引用计数 3.探寻foreach的运行过程 三.foreach中执行unset()的问题 1.当我们是为 ...
- Java学习之容器上(Collection接口常用方法,Iterator接口,使用foreach循环遍历Collection集合元素,Set集合通用知识(Hashset类,hashcode()与Lin
1.容器API的类图结构如下: JAVA的集合类是一种特别有用的工具类,它可以用于存储数量不等的多个对象,并可以实现常用数据结构,如栈,队列等,除此之外,JAVA集合还可用于保存具有映射关系的关联数组 ...
- foreach循环怎么获取全部返回值_JavaScript中For循环的3种版本和使用场景
作者 | Fernando Doglio 译者 | 王强 我们大家都至少会了解一个版本的 For 循环,它如此经典,可能每一种语言都有它的一个版本.但 JavaScript 足足有 3 种 For 循 ...
- java for each 的源_Java JDK1.5的新特性之for-each循环的底层原理
今天给大家分享一下for-each循环的底层原理,故事还得从字节码反汇编和反编译说起... 首先看一下Java JDK1.5的新特性 泛型: ... for-each. ... 自动拆箱和装箱功能 . ...
- stm32怎么调用for循环内部的变量_循环中的异步amp;amp;循环中的闭包
在这之前先要了解一下 for循环中let 和var的区别 var 是函数级作用域或者全局作用域,let是块级作用域 看一个例子 function foo() { for (var ...
- 循环内部异步函数处理相关问题解析
需求分析:根据一级标题ID筛选出所有对应的二级标题,返回一级标题ID,标题名和二级标题ID,标题名组成的数组 问题:通过forEach遍历所有一级标题取对应的ID,根据ID条件查找所有的二级标题,遍历 ...
- 使用foreach循环遍历集合元素
使用foreach循环遍历集合元素 Java5.0 提供了foreach循环迭代访问Collection和数组 遍历操作不需要获取Collection或数组的长度,无需使用索引访问元素 遍历集合的底层 ...
- java foreach6_Java foreach循环是否会创建一个新对象?
for-each循环没有神奇的对象构造.这个语法: for(Object o : Objects) { for(Object p : Objects2) { } } 这只是简写: for(Iterat ...
最新文章
- 如何优雅的转换 Bean 对象?
- 算法:图(Graph)的遍历、最小生成树和拓扑排序
- java Socket Tcp示例三则(服务端处理数据、上传文件)
- 关于解决jdbc版本错误问题
- android逆透视变换坐标,android – 如何使用OpenGL模拟OpenCV的warpPerspective功能(透视变换)...
- 删除ELK中的数据。。
- 数据状态什么是事务?
- AndroidL 开机展示Keyguard锁屏机制初探
- 搭建 sock5代理服务器
- Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled.
- nginx upstream配置_效率倍增!网易杭研Nginx自动扩缩容实践
- openlayer4 加载arcgis rest 服务
- 计算机的神奇小游戏,电脑课我们常玩的13个小游戏
- 查看本机计算机id,win7电脑如何用命令查看本机IP地址
- Android基于opencv4.6.0实现人脸识别功能
- nuc977 linux i9341 2.8寸lcd配置
- 23是android版本几,关于sdk=23的android版本权限的问题
- 信号完整性分析-笔记
- 20190917练习题总结——选择题
- 3.6 51单片机-动态数码管
热门文章
- KernelPCA进行非线性数据的映射和分类
- Java多线程(五)之BlockingQueue深入分析
- JAVA并发编程: CAS和AQS
- javaweb学习总结(十八):JSP属性范围
- 新加坡建设绿色高层数据中心的构想有所争议
- Ubuntu 15.1 unity在顶部面板显示系统CPU/内存/网络速度
- ios 自动内存管理 ARC
- 一起谈.NET技术,C# 中奇妙的函数之ToLookup
- ASP.NET中进行消息处理(MSMQ)
- 古典、SOA、传统、K8S、ServiceMesh