Javascript Трехуровневая комбинация - PullRequest
0 голосов
/ 16 августа 2011

Я пытаюсь создать небольшой инструмент JavaScript, где я могу создавать комбинации из трех списков. Каждая комбинация состоит из одного согласного, одного niqqudot и одного teamim. Я думал, что это можно решить с помощью простых вложенных циклов, но строка «document.write» приводит к бесконечному циклу и, похоже, не увеличивается. Первая комбинация повторяется снова и снова, но она никогда не переходит к следующей комбинации. Я был бы очень признателен, если бы кто-нибудь взглянул на код и понял, почему это так. Спасибо!

function combine()
{
    // lists
    var consonants = ["א", "ב", "ג", "ד", "ה", "ו", "ז", "ח", "ט", "י", "ך", "כ", "ל", "ם", "מ", "ן", "נ", "ס", "ע", "ף", "פ", "ץ", "צ", "ק", "ר", "שׁ", "שׂ", "ת"];

    var niqqudot = ["", "ְ", "ֱ", "ֲ", "ֳ", "ִ", "ֵ", "ֶ", "ַ", "ָ", "ֹ", "ֻ", "ׇ", "ֿ", "ׄ", "ׅ", "ּ", "ֽ"];

    var teamim = ["", "֑", "֒", "֓", "֔", "֕", "֖", "֗", "֘", "֙", "֚", "֛", "֜", "֝", "֞", "֟", "֠", "֡", "֢", "֣", "֤", "֥", "֦", "֧", "֨", "֩", "֪", "֫", "֬", "֭", "֮", "֯"];

    // all combinations
    var combinations = "";

    // counter variables
    var i = 0;
    var j = 0;
    var k = 0;

    for (i = 0; i < consonants.length; i+1)
    {
        for (j = 0; j < niqqudot.length; j+1)
        {
            for (k = 0; k < teamim.length; k+1)
            {
                //combinations = combinations + consonants[i] + niqqudot[j] + teamim[k]+ "\r\n" ;
                document.write(consonants[i] + niqqudot[j] + teamim[k] + "\r\n");
            }
        }
    }
}

Ответы [ 2 ]

2 голосов
/ 16 августа 2011

Выражения

i + 1 j + 1 k + 1

не изменяют сами значения переменных подсчета.Они просто оценивают и не имеют побочных эффектов.Вы должны сказать, что i + = 1, j + = 1, k + = 1.Иначе, как интерпретатор узнает, какой переменной присвоить значение?

2 голосов
/ 16 августа 2011

Вместо:

i+1
j+1
k+1

до:

i++
j++
k++

или:

i=i+1
j=j+1
k=k+1
...