sku二維數組裏的數組從頭至尾疊加組合

今天工做之餘與同事聊天,要是實現一個sku描述裏的字段組合的問題。而且實現了請吃飯。哈哈。一頓飯,我和另外一位同事積極槓桿的。後來實現了出來。

let skuList = [
                         ['黑色', '白色','黃色'],
                         ['64G', '128G', '512G'],
                       ]

例如上面的組合成這樣。

[
                    ["黑色", "64G"]
                    ["黑色", "128G"]
                    ["黑色", "512G"]
                    ["白色", "64G"]
                    ["白色", "128G"]
                    ["白色", "512G"]
                    ["黃色", "64G"]
                    ["黃色", "128G"]
                    ["黃色", "512G"]
                   ]

代碼實現以下

function eachArr(arr1,arr2){

             return arr1.map(function(item1){

                  return   arr2.map(function(item2){

                   return  item1 instanceof Array ? item1.concat(item2):[item1,item2];
            
                    })

                     }).reduce( function(accumulator, currentValue){
         return accumulator.concat(currentValue) })     
      }
              [['黑色', '白色','黃色'], ['64G', '128G', '512G'],].reduce(function(accumulator, currentValue){
  
            return eachArr(accumulator,currentValue)

              })

支持多二維數組哦。

例如:
[  ['黑色', '白色','黃色'],  ['64G', '128G', '512G'],['大', '中', '小'],.......].reduce(function(accumulator, currentValue){
  
            return eachArr(accumulator,currentValue)

              })
返回值是


["黑色", "64G", "大"]
 ["黑色", "64G", "中"]
 ["黑色", "64G", "小"]
 ["黑色", "128G", "大"]
 ["黑色", "128G", "中"]
 ["黑色", "128G", "小"]
 ["黑色", "512G", "大"]
 ["黑色", "512G", "中"]
 ["黑色", "512G", "小"]
 ["白色", "64G", "大"]
 ["白色", "64G", "中"]
 ["白色", "64G", "小"]
 ["白色", "128G", "大"]
 ["白色", "128G", "中"]
["白色", "128G", "小"]
 ["白色", "512G", "大"]
["白色", "512G", "中"]
["白色", "512G", "小"]
["黃色", "64G", "大"]
 ["黃色", "64G", "中"]
 ["黃色", "64G", "小"]
["黃色", "128G", "大"]
 ["黃色", "128G", "中"]
 ["黃色", "128G", "小"]
 ["黃色", "512G", "大"]
 ["黃色", "512G", "中"]
["黃色", "512G", "小"]

##### 整體實現思路就是二維數組裏的第一個數組與後一個數組組合。而後組合後的數組,再與後一個數組組合。依次累計組合就能夠了。美滋滋。吃了一頓蜜汁雞。數組

這是這是簡單的實現一種方式,若是要加上其餘業務或是功能能夠再eachArr裏面區改動。
      如要幫忙改動的,能夠留言哦。
相關文章
相關標籤/搜索