日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

多个独立的forEach循环, 内部处理条件是一样,代码优化方案

發布時間:2023/12/31 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 多个独立的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循环, 内部处理条件是一样,代码优化方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。