Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回未定义函数_Javascript_Arrays_Undefined - Fatal编程技术网

Javascript 返回未定义函数

Javascript 返回未定义函数,javascript,arrays,undefined,Javascript,Arrays,Undefined,在一个项目中,我遇到了这样一个问题:我的数组“slicetable”每次都返回未定义的值,我不知道如何解决这个问题。我有一个函数,可以为加密密钥长度生成一个可能性数组——然后我需要将文本拆分为第n个密钥的单个字符串,直到“密钥”的长度。我在这个问题上已经工作了4个小时,不知道从哪里开始。如果有人能推荐一个解决此类问题的好策略,并在这方面帮助我,那就太好了——我对所有这些都还很陌生 function vigenerekey(text, max) { // Standardize the t

在一个项目中,我遇到了这样一个问题:我的数组“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;
    }

}
函数vigenerekey(文本,最大值){
//标准化文本
text=text.split(“”).join(“”.toUpperCase();
//获取我们的密钥长度概率列表
var概率=VigenenekeyLength(文本,最大值);
//将Math.max扩展到数组
Array.max=函数(数组){
返回Math.max.apply(数学,数组);
};
//找到最可能的键长度的位置
对于(var d=0;d你的意思是:(中断而不是返回)

//查找最可能的密钥长度的位置

for(var d=0;d您的问题是for循环中的return语句

break;  
而不是

return; 


我的第一个答案中有一个拼写错误(我是第一个发布答案的人),主持人将其删除。我修复了这个拼写错误,但它说我无法取消删除它…所以我会再试一次。

几乎可以肯定问题出在
if(probabilities[d]==probabilities.max){return;}
block,但您能提供一些示例输入和预期输出吗?快速阅读这篇文章并不清楚它应该做什么。也许它是从“概率”的内部返回的循环,这将始终导致返回值
未定义
。此外,在每次调用此函数时重新分配
数组.max
可能不是一个好主意。您是第一个回答的,但答案是错误的(用continue替换return).我想这就是它被删除的原因。是的,这就是原因。当我看到它被删除后,我意识到我写的是“继续”而不是“中断”。谢谢你的投票!@11101101b是的,它说被Casperone删除了。我不知道Javascript中有一部分叫做“中断”;谢谢,很抱歉我的无能。
return;