多維數組,以及 業務中 遞增數據計算!使用map方法 可以快速計算

 在日常開發中 可能遇到 一些讓人很頭疼的 遞增數據 ,邏輯很清晰, 但代碼寫起來 就很複雜!~

之前 Vue (iview UI) 寫過一個 購物網站的後臺管理項目,裏面有一個 型號遞增規則 動態生成 表格數據!

寫的我腦子都要炸了(怪我太菜了!) 

1. iview table表格 將來要接的數據格式 是 (最終UI 上需要同型號合併表格,忽略) :   (這裏我只寫到了  二級內容 業務中需要 三級)

[   
    { a: '型號1', c: '紅色'},
    { a: '型號1', d: '藍色'},
    { a: '型號1', e: '綠色'},
    { b: '型號2', c: '紅色'},
    { b: '型號2', d: '藍色'},
    { b: '型號2', e: '綠色'}
]

 2. 當初 同事幫助在網上找了一個 複雜的 for 循環方法, 生成到了以下結構數據 

( 好像這種結構 在數學公式中有學名  叫一種算法 )當時同事還查了一下讓我看了看  具體叫啥我忘記了

 當然 還需要再次 forEach 加工 後才能得到 (1)中的數據結構

    function combolist(arr) {
      var sarr = [[]]
      for (var i = 0; i < arr.length; i++) {
        var tarr = []
        for (var j = 0; j < sarr.length; j++) {
          for (var k = 0; k < arr[i].length; k++) {
            tarr.push(sarr[j].concat(arr[i][k]))
          }
        }
        sarr = tarr
      }
      return sarr
    }

 

[
    ['型號1', '紅色'],
    ['型號1', '藍色'],
    ['型號1', '綠色'],
    ['型號2', '紅色'],
    ['型號2', '藍色'],
    ['型號2', '綠色']
]

 

最近 無意間看到 excel到處方法裏 用了一行map方法,之後又去網上搜索了一下

下面是 提供的示例:

excel導出中遇到的部分:

jsonData.map(v => filterVal.map(j => v[j]))

網絡提供示例:

var a = [1,2,3]
var b = [3,4]
a.map(a => (b.map(o => [a,o])))
// [ [[1,3],[1,4]], [[2,3],[2,4]], [[3,3],[3,4]] ]

a.flatMap(a => (b.map(o => [a,o])))
// [ [1,3],[1,4],[2,3],[2,4],[3,3],[3,4] ]

3.從而可以解決當初讓我 頭疼的數據結構:(這裏我寫了三級)

而且只需要一行代碼便可以完成業務需要的數據結構(完美)

javascript 不愧是 圖靈完備 型語言 ,js很強大 只是 我太弱了!  

let a = ['型號1', '型號2']
let b = ['紅色', '藍色', '綠色']
let c = ['L', 'XL']
let tabList = a.flatMap(aType => b.flatMap(bType => c.flatMap(cType => [{ name: aType, color: bType, size: cType }]) ))
console.log(tabList)

 

以上菜鳥經驗 ,如有錯誤 請大神指出!

發佈了50 篇原創文章 · 獲贊 13 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章