我有5个嵌套for循环:
let tags = Tags.find().fetch();
let cases = {};
for (i = 0; i < tags.length; i++) {
cases.problem = {};
cases.problem.one = {};
cases.problem.one.name = tags[i].name;
cases.problem.one.value = 50;
cases.solution = {};
cases.solution.one = tags[i].types.slice(0,5);
for (j = i + 1; j < (tags.length - 1); j++) {
cases.problem.two = {};
cases.problem.two.name = tags[j].name;
cases.problem.two.value = 30;
cases.solution.two = tags[j].types.slice(0,3);
for (k = j + 1; k < (tags.length - 2); k++) {
cases.problem.three = {};
cases.problem.three.name = tags[k].name;
cases.problem.three.value = 20;
cases.solution.three = tags[k].types.slice(0,2);
for (l = k + 1; l < (tags.length - 3); l++) {
cases.problem.four = {};
cases.problem.four.name = tags[l].name;
cases.problem.four.value = 0;
cases.solution.four = [""];
for (n = l + 1; n <= (tags.length - 4); n++) {
cases.problem.five = {}
cases.problem.five.name = tags[n].name;
cases.problem.five.value = 0;
cases.solution.five = [""];
console.log(cases)
// Cases.insert(cases)
}
}
}
}
}
他们工作得很好,直到3人,我不知道出了什么问题。
注意: Tags.length始终为5.
注意2:我试图对存储在标签数组中的对象进行每种可能的组合
注3:标签是这种形式的对象: 标签:{ name:String 类型:[数组] }
我将总是有5个标签,因此在Tags.find()上面的代码中.fetch()将始终返回5个对象。好的我想要/需要的是:
tags[0] tags[1] tags[2] tags[3] tags[4]
tags[0] tags[1] tags[2] tags[4] tags[3]
....
像这样的东西
答案 0 :(得分:2)
The 4th&amp;第五个嵌套循环永远不会执行,因为它们的条件是无法满足的。进行i = 0
:
1级循环 - &gt; for(i = 0; i < 5; i++)
2级循环 - &gt; for(j = 1; j < 4; j++)
3级循环 - &gt; for(k = 2; k < 3; k++)
4级循环 - &gt; for(l = 3; l < 2; l++)
5级循环 - &gt; for(n = 4; n <= 1; n++)
正如您所看到的,从第一次迭代开始,最后两个循环将不会运行。