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