普通二维数组转笛卡尔乘积,可用于生成sku

    var data = [
        ['A', 'B', 'C'],
        ['a', 'b', 'c'],
        ['1', '2', '3']
    ];

像这样的一组数据,有27钟组合,结果形如:

['A', 'a', '1']
['A', 'a', '2']
['A', 'a', '3']
['A', 'b', '1']
['A', 'b', '2']
['A', 'b', '3']
...

JS实现:

function decare (raw) {

    var index = 0
    var res = []
    var cur = []
    var fn = function (data, index) {

        index += 1
        for (var i = 0, len = data.length; i < len; i++) {

            if (index == 1) cur = []
            cur[index] = data[i]

            if (raw[index] != null) {

                fn(raw[index], index, cur)
            } else {
                
                res.push(cur.slice())
            }
        }
        
    }
    fn(raw[index], index)

    return res
}

使用:

    var data = [
        ['A', 'B', 'C'],
        ['a', 'b', 'c'],
        ['1', '2', '3']
    ];
    console.log(decare(data))
posted @ 2021-07-16 12:01  蜜蜂老牛黄瓜  阅读(86)  评论(0编辑  收藏  举报