商品規格SKU笛卡爾積計算

typeScript 版

function cartesianProductOf(...args: any[]) {
    return args.reduce(
        (total: any, current: any) => {
            let ret = [] as any[];
            total.forEach((a: any) => {
                current.forEach((b: any) => {
                    ret.push(a.concat([b]));
                });
            });
            return ret;
        },
        [[]]
    );
}

cartesianProductOf(['紅色','黑色'],['衣服','褲子']);

javaScript ES6版

function cartesianProductOf(...args) {
    return args.reduce(
        (total, current) => {
            let ret = [];
            total.forEach(a => {
                current.forEach(b => {
                    ret.push(a.concat([b]));
                });
            });
            return ret;
        },
        [[]]
    );
}

cartesianProductOf(['紅色','黑色'],['衣服','褲子']);

javaScript ES5版

function cartesianProductOf() {
    return Array.prototype.reduce.call(
        arguments,
        function(total, current) {
            let ret = [];
            total.forEach(function(a) {
                current.forEach(function(b){
                    ret.push(a.concat([b]));
                });
            });
            return ret;
        },
        [[]]
    );
}

cartesianProductOf(['紅色','黑色'],['衣服','褲子']);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章