-1

在做一个项目时,我遇到了这个问题,我的数组“slicetable”每次都返回未定义,我不知道如何解决这个问题。我有一个函数可以生成加密密钥长度的可能性数组 - 然后我需要将文本拆分为第 n 个密钥的单个字符串,直到“密钥”的长度。我已经在这个问题上工作了 4 个小时,但不知道从哪里开始。如果有人可以推荐一个解决此类问题的好策略,并帮助我解决这个问题,那就太好了——我对这一切还是很陌生。

function vigenerekey(text, max) {
    // Standardize the text
    text = text.split(" ").join("").toUpperCase();
    // Obtain our list of key length probabilities
    var probabilities = vigenerekeylength(text, max);
    // Extend the Math.max to arrays
    Array.max = function(array){
        return Math.max.apply(Math, array);
    };

    // Find the position of the most probable key length
    for (var d = 0; d <=12; d++) {
        if (probabilities[d] === probabilities.max) {
            return;
        }
    }
    // Slice the text into [d] parts (the length of the key)
    var slicetable = ['','','','','','','','','','','','','','','','','','','','',''];
    var chiresults = [];
    for (var e = 0; e <= d; e++){
        for (f = 0; f <= text.length; f++) {
            if (f % e === 0) {
                slicetable[e] += text.charAt(f);        
            }
        }
    return slicetable;
    }

}
4

2 回答 2

2

你不是这个意思吗:(break而不是return)

// Find the position of the most probable key length 
for (var d = 0; d <=12; d++) { 
    if (probabilities[d] === probabilities.max) { 
        break;
    } 
} 
于 2012-07-23T20:25:08.610 回答
1

您的问题是您的 for 循环中的 return 语句。你想放

break;  

代替

return; 

我的第一个答案有错字(我是第一个发布答案的人),版主删除了它。我修正了错字,但它说我无法取消删除它......所以我会再试一次。

于 2012-07-23T20:40:28.103 回答