多个独立的forEach循环, 内部处理条件是一样,代码优化方案
生活随笔
收集整理的這篇文章主要介紹了
多个独立的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循环, 内部处理条件是一样,代码优化方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 秘法铁砂掌 (铁砂掌练习秘法)
- 下一篇: create-react-app脚手架工