我有 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)
}
}
}
}
}
他们在 3er 之前工作正常,我不知道哪里出了问题。
注意:Tags.length 始终为 5。
注意 2:我正在尝试对存储在标签数组中的对象进行所有可能的组合
注意 3: 标签是具有以下形式的对象: 标签:{ 名称:字符串 类型:[数组]
我总是有 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]
....
类似的东西
最佳答案
第 4 和第 5 个嵌套循环将永远不会执行,因为它们的条件无法满足。在 i = 0
处进行第一次迭代:
一级循环 -> for(i = 0; i < 5; i++)
二级循环 -> for(j = 1; j < 4; j++)
三级循环 -> for(k = 2; k < 3; k++)
4 级循环 -> for(l = 3; l < 2; l++)
5 级循环 -> for(n = 4; n <= 1; n++)
如您所见,从第一次迭代开始,最后两个循环将不会运行。
关于javascript - 为什么这些 for 循环不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33261105/