我试图检查一个单词中是否有多个字母(每个单词是5个字母),并且我在一个名为library的变量中有一个8938个单词的数组。
function checkLetters(word){
var constant = 0;
for(i=0;i<5;i++){
for(j=i+1;j<5;j++){
if(word.charAt(i) == word.charAt(j)){
return false;
break;
} else {
return true;
}
}
}
}
if(compPrompt == 5 && checkLetters(compChoice) == true){
console.log(checkLetters(compChoice));
$('.right').append('<p id="winQuestion">Is "'+compFinalChoice+'" your word?');
$('.right').append('<div class="yesNo" id="yesQ"><p>Yes</p></div>');
$('.right').append('<div class="yesNo" id="noQ"><p>No</p></div>');
$('#yesQ').click(function() {
alert('Your word is "'+compFinalChoice+'". You lose!');
document.location.reload(true);
});
$('#noQ').click(function() {
$('.yesNo').remove();
$('#winQuestion').remove();
var splitCompChoice = compFinalChoice.split('');
var constant = 0;
var possibleAnswers = [];
for(var k=0;k<8939;k++){
for(var i=0;i<5;i++){
if(library[k].indexOf(splitCompChoice[i]) > -1){
constant++;
if(constant = 5 && checkLetters(library[k]) == true){
possibleAnswers.push(library[k]);
}
}
}
});
}
我遇到了2个代码问题。一个是if(compPrompt == 5 && checkLetters(compChoice) == true){
checkLetters(compChoice)
不正确而且两个告诉我library[k]
未定义。
答案 0 :(得分:0)
在第一个函数中,如果第一个字符不等于第二个字符,则返回true,为了修复它,您应该更改:
function checkLetters(word){
var constant = 0;
for(i=0;i<5;i++){
for(j=i+1;j<5;j++){
if(word.charAt(i) == word.charAt(j)){
return false;
break;
} else {
return true;
}
}
}
}
为:
function checkLetters(word){
var constant = 0;
for(i=0;i<5;i++){
for(j=i+1;j<5;j++){
if(word.charAt(i) == word.charAt(j)){
return false;
break;
}
}
}
return true;
}
第二,因为我们无法看到您在此处发布的代码中声明library
的位置,我相信它可能在某处定义为var
(局部变量),这意味着如果你希望能够在你应该传递的其他功能中使用它。
<强>更新强>
关于library
- 尝试按如下方式更改代码:
$('#noQ').click(function(library) {
$('.yesNo').remove();
$('#winQuestion').remove();
var splitCompChoice = compFinalChoice.split('');
var constant = 0;
var possibleAnswers = [];
for(var k=0;k<8939;k++){
for(var i=0;i<5;i++){
if(library[k].indexOf(splitCompChoice[i]) > -1){
constant++;
if(constant = 5 && checkLetters(library[k]) == true){
possibleAnswers.push(library[k]);
}
}
}
}(library));
答案 1 :(得分:0)
为了解决当checkLetters函数返回false时传递if语句的问题,我将从
更改语句 if(compPrompt == 5 && checkLetters(compChoice) == true)
到
if(compPrompt == 5 && checkLetters(compChoice))