工作中遇到了一个问题,多个独立的 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循环, 内部处理条件是一样,代码优化方案相关推荐

  1. java for循环迭代_JAVA中的for-each循环与迭代

    在学习java中的collection时注意到,collection层次的根接口Collection实现了Iterable接口(位于java.lang包中),实现这个接口允许对象成为 "fo ...

  2. php的foreach循环执行过程分析以及循环中执行unset()的一些问题

    文章目录 一.前言 二.foreach的执行过程 1.关于版本不同的foreach变化 2.关于引用计数 3.探寻foreach的运行过程 三.foreach中执行unset()的问题 1.当我们是为 ...

  3. Java学习之容器上(Collection接口常用方法,Iterator接口,使用foreach循环遍历Collection集合元素,Set集合通用知识(Hashset类,hashcode()与Lin

    1.容器API的类图结构如下: JAVA的集合类是一种特别有用的工具类,它可以用于存储数量不等的多个对象,并可以实现常用数据结构,如栈,队列等,除此之外,JAVA集合还可用于保存具有映射关系的关联数组 ...

  4. foreach循环怎么获取全部返回值_JavaScript中For循环的3种版本和使用场景

    作者 | Fernando Doglio 译者 | 王强 我们大家都至少会了解一个版本的 For 循环,它如此经典,可能每一种语言都有它的一个版本.但 JavaScript 足足有 3 种 For 循 ...

  5. java for each 的源_Java JDK1.5的新特性之for-each循环的底层原理

    今天给大家分享一下for-each循环的底层原理,故事还得从字节码反汇编和反编译说起... 首先看一下Java JDK1.5的新特性 泛型: ... for-each. ... 自动拆箱和装箱功能 . ...

  6. stm32怎么调用for循环内部的变量_循环中的异步amp;amp;循环中的闭包

    在这之前先要了解一下 for循环中let 和var的区别 var 是函数级作用域或者全局作用域,let是块级作用域 看一个例子     function foo() {       for (var  ...

  7. 循环内部异步函数处理相关问题解析

    需求分析:根据一级标题ID筛选出所有对应的二级标题,返回一级标题ID,标题名和二级标题ID,标题名组成的数组 问题:通过forEach遍历所有一级标题取对应的ID,根据ID条件查找所有的二级标题,遍历 ...

  8. 使用foreach循环遍历集合元素

    使用foreach循环遍历集合元素 Java5.0 提供了foreach循环迭代访问Collection和数组 遍历操作不需要获取Collection或数组的长度,无需使用索引访问元素 遍历集合的底层 ...

  9. java foreach6_Java foreach循环是否会创建一个新对象?

    for-each循环没有神奇的对象构造.这个语法: for(Object o : Objects) { for(Object p : Objects2) { } } 这只是简写: for(Iterat ...

最新文章

  1. 如何优雅的转换 Bean 对象?
  2. 算法:图(Graph)的遍历、最小生成树和拓扑排序
  3. java Socket Tcp示例三则(服务端处理数据、上传文件)
  4. 关于解决jdbc版本错误问题
  5. android逆透视变换坐标,android – 如何使用OpenGL模拟OpenCV的warpPerspective功能(透视变换)...
  6. 删除ELK中的数据。。
  7. 数据状态什么是事务?
  8. AndroidL 开机展示Keyguard锁屏机制初探
  9. 搭建 sock5代理服务器
  10. Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled.
  11. nginx upstream配置_效率倍增!网易杭研Nginx自动扩缩容实践
  12. openlayer4 加载arcgis rest 服务
  13. 计算机的神奇小游戏,电脑课我们常玩的13个小游戏
  14. 查看本机计算机id,win7电脑如何用命令查看本机IP地址
  15. Android基于opencv4.6.0实现人脸识别功能
  16. nuc977 linux i9341 2.8寸lcd配置
  17. 23是android版本几,关于sdk=23的android版本权限的问题
  18. 信号完整性分析-笔记
  19. 20190917练习题总结——选择题
  20. 3.6 51单片机-动态数码管

热门文章

  1. KernelPCA进行非线性数据的映射和分类
  2. Java多线程(五)之BlockingQueue深入分析
  3. JAVA并发编程: CAS和AQS
  4. javaweb学习总结(十八):JSP属性范围
  5. 新加坡建设绿色高层数据中心的构想有所争议
  6. Ubuntu 15.1 unity在顶部面板显示系统CPU/内存/网络速度
  7. ios 自动内存管理 ARC
  8. 一起谈.NET技术,C# 中奇妙的函数之ToLookup
  9. ASP.NET中进行消息处理(MSMQ)
  10. 古典、SOA、传统、K8S、ServiceMesh