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);
相关推荐
Predestination王瀞潞2 小时前
IO操作(Num22)
开发语言·c++
宋恩淇要努力3 小时前
C++继承
开发语言·c++
沿着路走到底4 小时前
python 基础
开发语言·python
記億揺晃着的那天5 小时前
Vue + Element UI 表格自适应高度如何做?
javascript·vue.js·ui
沐知全栈开发5 小时前
C# 委托(Delegate)
开发语言
GISer_Jing6 小时前
ByteDance——jy真题
前端·javascript·面试
真的想不出名儿6 小时前
Vue 中 props 传递数据的坑
前端·javascript·vue.js
任子菲阳6 小时前
学Java第三十四天-----抽象类和抽象方法
java·开发语言
阳光阴郁大boy6 小时前
星座运势网站技术解析:从零打造现代化Web应用
前端·javascript
sorryhc6 小时前
如何设计一个架构良好的前端请求库?
前端·javascript·架构