笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尔积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。(来自百度)
简单的实现一下商品SKU算法。
const spec = [
['红', '白', '蓝'],
['32G', '64G'],
['移动', '联通', '电信']
]
const getSku = (specs) => {
return specs.reduce((prev, next) => {
let arr = []
// 两层遍历,将每一层的子项数组合并为同一个数组
prev.forEach(p => {
next.forEach(n => {
arr.push(p.concat([n]))
});
});
return arr
}, [[]]) // 初始值是一个空二维数组
}