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);
相关推荐
折哥的程序人生 · 物流技术专研10 分钟前
第3篇:为何要配置环境变量?
java·开发语言·后端·面试
游乐码16 分钟前
c#迭代器
开发语言·c#
十五年专注C++开发22 分钟前
Qt程序设计涉及到的开发软件
开发语言·c++·qt
海盗123423 分钟前
C# OPC UA客户端开发实战
服务器·开发语言·c#
asdzx6728 分钟前
使用 C# 从 URL 下载 Word 文档
开发语言·c#·word
大萌神Nagato31 分钟前
python 包管理器uv
开发语言·python·uv
Hello--_--World37 分钟前
Vue:虚拟Dom
前端·javascript·vue.js
humcomm40 分钟前
AI 编程时代-全栈开发技术栈解析
开发语言·人工智能
人道领域1 小时前
【黑马点评日记】社交平台用户关注功能全解析Feed流相关操作
java·开发语言·数据库·redis·python
xiaoshuaishuai81 小时前
C# DeepSeek V4 与 V3对比
开发语言·c#·量子计算