/**
* 笛卡尔积生成规格
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @datetime 2019-09-22T00:33:48+0800
* @desc description
* @param {[array]} arr1 [要进行笛卡尔积的二维数组]
* @param {[array]} arr2 [最终实现的笛卡尔积组合,可不写]
*/
function SpecCartesian(arr1, arr2)
{
// 去除第一个元素
var result = [];
var temp_arr = arr1;
var first = temp_arr.splice(0, 1);
if((arr2 || null) == null)
{
arr2 = [];
}
// 判断是否是第一次进行拼接
if(arr2.length > 0)
{
for(var i in arr2)
{
for(var k in first[0].value)
{
result.push(arr2[i]+','+first[0].value[k]);
}
}
} else {
for(var i in first[0].value)
{
result.push(first[0].value[i]);
}
}
// 递归进行拼接
if(arr1.length > 0)
{
result = SpecCartesian(arr1, result);
}
// 返回最终笛卡尔积
return result;
}
// 自动生成规格
var spec = [
{
"title": "颜色",
"value": ["黑色", "白色", "蓝色"]
},
{
"title": "尺码",
"value": ["S", "M", "L", "XL", "XXL"]
},
{
"title": "长度",
"value": ["5分裤", "7分裤", "9分裤", "长裤"]
}
];
var data = SpecCartesian(spec);
console.log(data);