【电商】商品规格组合发布算法

日期: 2019-06-28         浏览量: 3665

电商,添加商品,商品的规格可以组合成不同的SKU也就是商品最小的货存单位。


上代码:


let arr = [
    [
        {
            1: '红色'
        },
        {
            1: '紫色'
        }
    ],
    [
        {
            2: 'S'
        },
        {
            2: 'm'
        }
    ],
    [
        {
            3:'圆领'
        },
        {
            3:'V领'
        },
        {
            3:'高领'
        }
    ],
];


//笛卡尔乘积 算法
function jx(arr){
    if(arr.length>1){
        let res = [];
        let item = arr[0];
        arr.splice(0,1);
        var nextItem = jx(arr);
        for(let i=0; i<item.length; i++){
            for(let j = 0; j<nextItem.length; j++){
                //不要使用 object.assign 方法
                let obj = { ...item[i], ...nextItem[j] };  
                res.push(obj)
            }
        }
        return res;
    }else{
        return arr[0]
    }
}
console.log(jx(arr));

//输出值

/* [ { '1': '红色', '2': 'S', '3': '圆领' },
  { '1': '红色', '2': 'S', '3': 'V领' },
  { '1': '红色', '2': 'S', '3': '高领' },
  { '1': '红色', '2': 'm', '3': '圆领' },
  { '1': '红色', '2': 'm', '3': 'V领' },
  { '1': '红色', '2': 'm', '3': '高领' },
  { '1': '紫色', '2': 'S', '3': '圆领' },
  { '1': '紫色', '2': 'S', '3': 'V领' },
  { '1': '紫色', '2': 'S', '3': '高领' },
  { '1': '紫色', '2': 'm', '3': '圆领' },
  { '1': '紫色', '2': 'm', '3': 'V领' },
  { '1': '紫色', '2': 'm', '3': '高领' } ]  */