代码如下:
模拟数据 specArray
思路:就是把第一个整理出来,然后跟specArray的其他部分组合,组合完第一个就变了,反复循环
var specArray = new Array();
specArray[0] = {num:1,spec:"颜色",specValue:[
{spec_id:1,spec_value_id:1,spec_value:"白色"},
{spec_id:1,spec_value_id:2,spec_value:"蓝色"},
{spec_id:1,spec_value_id:3,spec_value:"黑色"}
]};
specArray[1] = {num:1,spec:"CPU",specValue:[
{spec_id:2,spec_value_id:4,spec_value:"1G"},
{spec_id:2,spec_value_id:5,spec_value:"2G"},
{spec_id:2,spec_value_id:6,spec_value:"3G"}
]};
var first;
function createSku()
{
var len = specArray.length;
first = [];
if(specArray.length > 0)
{
for(var i =0;i<specArray[0]['specValue'].length;i++){
var obj_1 = new Object();
obj_1.id = specArray[0]['specValue'][i].spec_id + ":" + specArray[0]['specValue'][i].spec_value_id;
obj_1.name = specArray[0]['specValue'][i].spec_value;
first.push(obj_1);
}
}
//console.log(first);
for(var j=1;j<len;j++)
{
var current = specArray[j]["specValue"];
var current_len = current.length;
var copy_data = new Array();
for(var k=0;k<first.length;k++)
{
var old_id = first[k].id;
var old_name = first[k].name;
for(var g=0;g<current_len;g++)
{
var now_id = current[g]["spec_id"]+":"+current[g]["spec_value_id"];
var now_name = current[g].spec_value;
var obj_2 = new Object();
obj_2.id = old_id+","+now_id;
obj_2.name = old_name +"," + now_name;
copy_data.push(obj_2);
}
}
first = copy_data;
}
}
console.log(specArray);
console.log("---------------------------------------------------------------------------");
createSku();
console.log(first);