var groupArrays = {
"group1": [
"volvo",
"bmw",
"audi"
],
"group2": [
"red"
],
"group3": [
"1991"
]
};
var selectors = [];
var selector;
for (var g1 = 0; g1 < groupArrays.group1.length; g1++) {
for (var g2 = 0; g2 < groupArrays.group2.length; g2++) {
for (var g3 = 0; g3 < groupArrays.group3.length; g3++) {
selector = "." + groupArrays.group1[g1] +
"." + groupArrays.group2[g2] +
"." + groupArrays.group3[g3];
selectors.push(selector);
}
}
}
console.log(selectors);
Updated code for any number of groups
var groupArrays = {
"group1": [
"volvo",
"bmw",
"audi"
],
"group2": [
"red","green"
],
"group3": [
"1991","1992"
]
};
var selectors = [];
var values = [];
var ga = [];
for (var group in groupArrays) {
ga.push(groupArrays[group]);
}
traverse(ga, 0);
console.log(selectors);
function traverse(ga, index) {
if (index >= ga.length) {
selectors.push("." + values.join("."));
return;
}
var hold = ga[index].slice(0);
var gacopy = ga[index];
while(gacopy.length > 0) {
var pickedValue = gacopy[gacopy.length - 1];
values.push(pickedValue);
gacopy.pop();
traverse(ga, index + 1);
values.splice(values.indexOf(pickedValue), 1);
}
ga[index] = hold;
}