您当前的位置: 首页 > 

苗先生的PHP记录

暂无认证

  • 7浏览

    0关注

    190博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

jq SKU排列

苗先生的PHP记录 发布时间:2021-07-10 16:59:55 ,浏览量:7



    let list = [
        {
            name: '存储容量',
            checkList: [
                {
                    name: '8g',
                    id: 111325
                },
                {
                    name: '16g',
                    id: 111327
                }],
        },
        {
            name: '产品类型',
            checkList: [
                {
                    name: 'iphone',
                    id: 111303
                },
                {
                    name: 'vivo',
                    id: 111305
                }],
        },
        {
            name: '产品颜色',
            checkList: [
                {
                    name: '金',
                    id: 111303
                },
                {
                    name: '灰',
                    id: 111305
                }],
        },
        {
            name: '网络类型',
            checkList: [{
                name: '套餐一',
                id: 111281
            },
                {
                    name: '套餐五',
                    id: 111281
                }],
        },
    ]

    function arrp(arr){
//编辑原数组格式
        if(arr[0].checkList){
            arr=arr.map((item)=>{
                return item=item.checkList
            })
        }
        if(arr.length == 1){
//最终合并成一个
            return arr[0];
        }else{	//有两个子数组就合并
            let arrySon = [];
//将组合放到新数组中
            arr[0].forEach((item,index)=>{
                arr[1].forEach((item1,index1)=>{
                    arrySon.push([].concat(arr[0][index],arr[1][index1]));
                })
            })
// 新数组并入原数组,去除合并的前两个数组
            arr[0] = arrySon;
            arr.splice(1,1);
// 递归
            return arrp(arr);
        }
    }

    console.log(arrp(list));




2

    // ["颜色:白,类型:B", "颜色:白,类型:A", "颜色:黑,类型:B", "颜色:黑,类型:A"]
    let final_arr = []
    let arrs = []
    let arr_copy = ''
    let leg = ''
    let array = [
        {"skuName":"颜色","skuValues":[{"name":"白"},{"name":"黑"}]},
        {"skuName":"类型","skuValues":[{"name":"B"},{"name":"A"}]},
        {"skuName":"尺码","skuValues":[{"name":"S"},{"name":"L"}]},
    ]

    array.forEach((item , index ) =>  {
        let arr = []
        item.skuValues.forEach((item_p , index_p) => {
            let copy_array = ''
            copy_array = item.skuName + ':' + item_p.name
            arr.push(copy_array)
        })
        arrs.push(arr)
    })
    // console.log(arrs)

    let result = arrs.reduce((acc, cur, index) => {
        // console.log(acc , cur , index )
        // 从第二项开始合并值
        if (index > 0) {
            let saveArr = []
            acc.forEach(item => {
                // console.log(item)
                cur.forEach((subItem,sub_index) => {
                    // console.log('subItem' , subItem)
                    arr_copy = ''
                    arr_copy = item + ',' + subItem
                    saveArr.push(arr_copy)
                })
                // console.log(arr_copy)
            })
            acc = saveArr
        }
        return acc
    }, arrs[0]) // 把数组的第一项传入作为初始值

    if(array.length ==1) {
        result = arrs
    }


    // console.log(result)
    console.log(result)

3


    let arr = [
        [{
            name: '红色',
            value: '1'
        }, {
            name: '黑色',
            value: '2'
        }],

        [{
            name: 'X',
            value: '1'
        }, {
            name: 'M',
            value: '2'
        }],


        [{
            name: '款式A',
            value: '1'
        }, {
            name: '款式B',
            value: '2'
        }, {
            name: '款式C',
            value: '3'
        }]
    ]
    let list = arr.reduce((a, b) => {
        var ret = [];
        a.forEach(function(a) {
            b.forEach(function(b) {
                ret.push(a.concat([b]));
            });
        })
        return ret;
    }, [
        []
    ])
    console.log(list);



4

       (function() {
           dwn = function(a) {
               document.writeln(a + "")
           };
           //笛卡尔积
           var Cartesian = function(a, b) {
               var ret = [];
               for (var i = 0; i             
关注
打赏
1665468453
查看更多评论
0.0792s