为什么这些for循环不起作用?

时间:2015-10-21 13:48:23

标签: javascript

我有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]
....

像这样的东西

1 个答案:

答案 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++)

正如您所看到的,从第一次迭代开始,最后两个循环将不会运行。

相关问题