V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
duzhihao
V2EX  ›  问与答

求大佬!!这种是这么循环出来的

  •  
  •   duzhihao · 2019-01-09 23:15:12 +08:00 · 1361 次点击
    这是一个创建于 1905 天前的主题,其中的信息可能已经有所发展或是发生改变。

    上面的规格可以无限增加,规格值也是可以无限增加,那么下面的是怎么循环出来的类似这种

    
    skuData: [
              {
                 skuname: "",
                 skus: [1, 2, 3]
             },
             {
                 skuname: "",
                 skus: [4, 5, 6]
             },
              {
                 skuname: "",
                 skus: [7, 8, 9]
             }
     ]
     
    

    循环成[14,15,16,17,18,19,24,25,26,27,28,29,34,35,36,37,38,39]

    7 条回复    2019-01-10 10:30:35 +08:00
    duzhihao
        1
    duzhihao  
    OP
       2019-01-09 23:16:00 +08:00
    求大佬给个思路,目前实在无从下手啊。
    cdwyd
        2
    cdwyd  
       2019-01-09 23:21:01 +08:00
    感觉有点没说清楚,只看你给的例子的话,把下面的两个列表合成一个 然后 用第一个列表里面的元素分别和合成后的元素组合就是了。
    feiyuanqiu
        3
    feiyuanqiu  
       2019-01-09 23:25:10 +08:00 via Android
    什么意思?图看懂了,文字没看懂。下面的列表不就是上面设置的规格的笛卡尔积么
    guiqiqi
        4
    guiqiqi  
       2019-01-09 23:27:01 +08:00 via iPhone
    刚刚写完相关功能,我这边做的 spu 生成 sku,将属性值构造多叉树,遍历全部叶子结点可得^_^
    okchum
        5
    okchum  
       2019-01-10 04:15:56 +08:00
    Cartesian product
    meteor957
        6
    meteor957  
       2019-01-10 09:41:59 +08:00
    mark
    duzhihao
        7
    duzhihao  
    OP
       2019-01-10 10:30:35 +08:00
    多谢大佬的回答,个人水平有限还不能理解笛卡尔树的概念但是利用 js 里面的 reduce 勉强实现了效果
    ``` javascript

    function calcDescartes (array) {
    if (array.length < 2) return array[0] || [];
    return [].reduce.call(array, function (col, set) {
    var res = [];
    col.forEach(function (c) {
    set.forEach(function (s) {
    var t = [].concat(Array.isArray(c) ? c : [c]);
    t.push(s);
    res.push(t);
    })
    });
    return res;
    });
    }

    console.log(calcDescartes([[1,2,3],['a','b','c'],['e','f']]));
    ```
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1061 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 18:58 · PVG 02:58 · LAX 11:58 · JFK 14:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.