此方法适合组合项较少,如有三项,每项5个,将循环5*5*5=125次
var ff = [
{
id:14,
name:"出发地",
v:[
{id: "#47499", name: "北京市"},
{id: "#7706", name: "吉林市"},
{id: "#6088", name: "大连市"}
],
l:0
},
{
id:13,
name:"游客类型",
v:[
{id: 26, name: "成人"},
{id: 27, name: "儿童"}
],
l:0
}
]
var f = true;
while (f) {
var sid = new Array();
for (var m = ff.length - 1; m >= 0; m--) {
//如果此层循环数达到最多,此层标记l归0,上一层标记进1
if (ff[m]["l"] >= ff[m]["v"].length) {
if (m == 0) {
f = false; //循环到第一层最后一个时退出
sid = new Array(); //清除前几层的记录值
break;
}
ff[m]["l"] = 0; //此层标记l归0
ff[m - 1]["l"]++; //上一层标记进1
}
sid.push(ff[m]["v"][ff[m]["l"]]["id"]);
//从底层向上倒循环,每次最底层先进1
if (m == ff.length - 1) {
ff[m]["l"]++;
}
}
console.log(sid.sort().join("_"))
}
输出结果
#47499_26
#47499_27
#7706_26
#7706_27
#6088_26
#6088_27