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);
相关推荐
Blossom.1182 分钟前
使用Python和Scikit-Learn实现机器学习模型调优
开发语言·人工智能·python·深度学习·目标检测·机器学习·scikit-learn
曹勖之32 分钟前
基于ROS2,撰写python脚本,根据给定的舵-桨动力学模型实现动力学更新
开发语言·python·机器人·ros2
豆沙沙包?1 小时前
2025年- H77-Lc185--45.跳跃游戏II(贪心)--Java版
java·开发语言·游戏
军训猫猫头1 小时前
96.如何使用C#实现串口发送? C#例子
开发语言·c#
coding随想1 小时前
JavaScript ES6 解构:优雅提取数据的艺术
前端·javascript·es6
年老体衰按不动键盘1 小时前
快速部署和启动Vue3项目
java·javascript·vue
灵感__idea1 小时前
JavaScript高级程序设计(第5版):无处不在的集合
前端·javascript·程序员
liuyang-neu2 小时前
java内存模型JMM
java·开发语言
星辰引路-Lefan2 小时前
深入理解React Hooks的原理与实践
前端·javascript·react.js
江城开朗的豌豆2 小时前
JavaScript篇:函数间的悄悄话:callee和caller的那些事儿
javascript·面试