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);
相关推荐
努力只为躺平几秒前
🔥 油猴脚本开发指南:从基础API到发布全流程
前端·javascript
bitbitDown2 分钟前
我用Playwright爬了掘金热榜,发现了这些有趣的秘密... 🕵️‍♂️
前端·javascript·vue.js
linux kernel14 分钟前
第七讲:C++中的string类
开发语言·c++
DoraBigHead28 分钟前
🧠 别急着传!大文件上传里,藏着 Promise 的高级用法
前端·javascript·面试
玩代码28 分钟前
Java线程池原理概述
java·开发语言·线程池
嘉琪00131 分钟前
封装一个有最小化的dialog组件
前端·javascript·css
李明卫杭州42 分钟前
希尔排序
前端·javascript
爱学习的茄子43 分钟前
JavaScript闭包应用场景完全指南:从基础概念到工程实践
前端·javascript·面试
泰勒疯狂展开44 分钟前
Java研学-MongoDB(三)
java·开发语言·mongodb
zzywxc7871 小时前
AI技术通过提示词工程(Prompt Engineering)正在深度重塑职场生态和行业格局,这种变革不仅体现在效率提升,更在重构人机协作模式。
java·大数据·开发语言·人工智能·spring·重构·prompt