首页 > 编程语言 > 详细

sku二维数组里的数组从头到尾叠加组合

时间:2019-11-29 20:44:34      阅读:64      评论:0      收藏:0      [点我收藏+]

今天工作之余与同事聊天,要是实现一个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"]
                    ["白色", "64G"]
                    ["白色", "128G"]
                    ["白色", "512G"]
                    ["黄色", "64G"]
                    ["黄色", "128G"]
                    ["黄色", "512G"]
                   ] 

支持多二维数组哦。

例如:
[  ['黑色', '白色','黄色'],  ['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里面区改动。
      如要帮忙改动的,可以留言哦。

sku二维数组里的数组从头到尾叠加组合

原文:https://www.cnblogs.com/koujinshidui/p/11959973.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!