function GetProducts (specs) {if(!specs | | specs.length = =0) { return []; } Else { returnJoinspec ([[]], specs,0, specs.length-1); } function Joinspec (prevproducts, specs, I, max) {varCurrentproducts = [], currentproduct, currentspecs =Specs[i]; if(I >max) { returnprevproducts; } Prevproducts.foreach (function (prevproduct) {Currentspecs.foreach (function (spec) {Curr Entproduct= Prevproduct.slice (0); Currentproduct.push (spec); Currentproducts.push (currentproduct); }); }); returnJoinspec (currentproducts, specs, + +)I, Max); }}
VarSpecs= [[{"Spec_name":Color,"Spec_type":"1","SPEC_ID":"5","SPEC_VALUE_ID":"11","Spec_value_name":White},{"Spec_name":Color,"Spec_type":"1","SPEC_ID":"5","SPEC_VALUE_ID":"12","Spec_value_name":Black}],[{"Spec_name":Size,"Spec_type":"0","SPEC_ID":"6","SPEC_VALUE_ID":"9","Spec_value_name":"10"},{"Spec_name":Size,"Spec_type":"0","SPEC_ID":"6","SPEC_VALUE_ID":"10","Spec_value_name":"20"}],[{"Spec_name":Material,"Spec_type":"0","SPEC_ID":"7","SPEC_VALUE_ID":"13","Spec_value_name":Diamond},{"Spec_name":Material,"Spec_type":"0", "spec_id" : "7" , "spec_value_id" : "," spec _value_name ":" Crystal "},{" Spec_name " : "material" , "Spec_type" :< span class= "str" > "0" , "spec_id" : "7" , "spec_value_id" : ",<" span class= "str" > "spec_value_name" : "agate" }];
Console.log (GetProducts (specs));
JS writing an array Cartesian product algorithm