当前位置: 首页 > article >正文

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);


http://www.kler.cn/a/287344.html

相关文章:

  • 【HarmonyOS】鸿蒙系统在租房项目中的项目实战(一)
  • Qt中实现旋转动画效果
  • MyBatis-Plus中使用JSON 类型字段
  • sql中的聚合函数
  • FastGPT部署通义千问Qwen和智谱glm模型|OneAPI配置免费的第三方API
  • Linux dpkg命令详解
  • CSS 高级区块效果——WEB开发系列25
  • 免费的电脑录屏软件,这几款软件满足录屏需求!
  • visual studio code默认打开文档的编码格式simplified chiness(GBK) gbk
  • 基于FFMPEG读取摄像头图像编码为h264
  • 【Datawhale X 李宏毅苹果书 AI夏令营】《深度学习详解》Task2 打卡
  • 【Web开发工具】基于Windows系统下的WebStorm安装教程
  • 告警管理大师:深入解析Alertmanager的配置与实战应用
  • esp32 中断最简验证程序
  • css的“id选择器“命名问题
  • pytest自动化测试执行环境切换的两种解决方案
  • 深度学习系列74:语音中的mel谱
  • 通用文字识别API如何通过Java进行调用?(一)
  • Python知识点:如何使用Appium进行移动应用测试
  • Linux基础(包括centos7安装、linux基础命令、vi编辑器)
  • three.js 开发粒子系统
  • RCU概念
  • 【QNX+Android虚拟化方案】101 - Android GVM 虚拟网络 Virt-Net 配置
  • 数学基础 -- 线性代数之酉矩阵
  • git笔记 -- 日志搜索的方法
  • JAVA HttpUrlConnection 使用 GZIP 编码压缩