Javascript实现笛卡儿积算法

在根据商品属性计算SKU时,通常会对商品不同选项的不同属性进行笛卡儿积运算。

复制代码
function cartesian(elements) {
    if (!Array.isArray(elements))
        throw new TypeError();
    var end = elements.length - 1,
        result = [];

    function addTo(curr, start) {
        var first = elements[start],
            last = (start === end);
        for (var i = 0; i < first.length; ++i) {
            var copy = curr.slice();
            copy.push(first[i]);
            if (last) {
                result.push(copy);
            } else {
                addTo(copy, start + 1);
            }
        }
    }

    if (elements.length)
        addTo([], 0);
    else
        result.push([]);
    return result;
}

const result = cartesian([[1, 2], ['a', 'b'], [true, false]]);
console.log(result);
相关推荐
coderlin_39 分钟前
BI布局拖拽 (1) 深入react-gird-layout源码
android·javascript·react.js
我是苏苏1 小时前
C#基础:Winform桌面开发中窗体之间的数据传递
开发语言·c#
伍哥的传说1 小时前
React 实现五子棋人机对战小游戏
前端·javascript·react.js·前端框架·node.js·ecmascript·js
我在北京coding1 小时前
element el-table渲染二维对象数组
前端·javascript·vue.js
布兰妮甜1 小时前
Vue+ElementUI聊天室开发指南
前端·javascript·vue.js·elementui
SevgiliD1 小时前
el-button传入icon用法可能会出现的问题
前端·javascript·vue.js
我在北京coding1 小时前
Element-Plus-全局自动引入图标组件,无需每次import
前端·javascript·vue.js
斐波娜娜1 小时前
Maven详解
java·开发语言·maven
鱼 空1 小时前
解决el-table右下角被挡住部分
javascript·vue.js·elementui
小码氓1 小时前
Java填充Word模板
java·开发语言·spring·word