首页 > 解决方案 > 无法为我的函数创造合适的回报

问题描述

我必须创建一个function检查单词是否为回文的。我的推理是逐个字母、正常和反向分解单词,然后比较两个结果来确定一个单词是否是回文。用if - else我给用户一个完美地告诉结果的警报。现在,我了解到大多数函数必须有一个return包含所需结果的变量。在这种情况下我真的不能拥有这个,我认为它可以这样完美地工作。我试过了

var palindromeResult = (leftToRightWord == rightToLeftWord) ? 'true':'false';
console.log(palindromeResult);    
return palindromeResult;

但它只适用于开发人员,如果他在控制台中读取 console.log,但这对我来说是一个糟糕的解决方案......你有比这更好的主意吗?function在我的完整代码下方

function isPalindrome(wordToCheck) {
    for(var i = 0; i < wordToCheck.length; i++) {
        var leftToRightWord = wordToCheck[i];
        console.log('Left ' + leftToRightWord);
    }

    for(var j = wordToCheck.length - 1; j >= 0; j--) {
        var rightToLeftWord = wordToCheck[j];
        console.log('Right ' + rightToLeftWord);
    }
    
    if ( leftToRightWord === rightToLeftWord) {
        alert('La parola è palindroma');
    } else {
        alert('La parola non è palindroma');
    }

编辑:最后我改变了很多我的代码以获得更好的易读性。

//Data
var userWord;

//I ask a word to the user
do {
    userWord = prompt("Dimmi una parola");
} while (userWord.length === 0)

//Here the result of the function is saved and it can be reused
var functionResult = isPalindrome(userWord);
console.log (functionResult);

//Function to know if the word inserted is a palindrome or not
//the cycle with rightToLeft reverse the word so it can be compared to the normal word
//A pop-up will give the solution so it can be seen clearly on your screen
//The function result will ben saved outside the function in var functionResult so it can be seen with a console.log or reused for whatever use
function isPalindrome(wordToCheck) {
    var rightToLeftWord = '';

    for(var j = wordToCheck.length - 1; j >= 0; j--) {
    rightToLeftWord = rightToLeftWord + wordToCheck[j];
    }
    console.log(rightToLeftWord);

    var palindromeResult = wordToCheck == rightToLeftWord;
    alert(palindromeResult);
    return palindromeResult;
}

现在 for 循环不再有问题,正如您向我指出的那样,它可以正确识别一个单词是否是回文。

标签: javascriptfunction

解决方案


见片段。该函数返回答案,然后您可以提醒它、将其分配给一个变量、在页面上回显它等等。我不太确定您的算法,因为它告诉我“abracadabra”是回文,但事实并非如此。RTL 字母的顺序是错误的!

function isPalindrome(wordToCheck) {
  for (var i = 0; i < wordToCheck.length; i++) {
    var leftToRightWord = wordToCheck[i];
    console.log('Left ' + leftToRightWord);
  }

  for (var j = wordToCheck.length - 1; j >= 0; j--) {
    var rightToLeftWord = wordToCheck[j];
    console.log('Right ' + rightToLeftWord);
  }

  if (leftToRightWord === rightToLeftWord) {
    return 'La parola è palindroma';
  } else {
    return 'La parola non è palindroma';
  }
}

alert(isPalindrome('abracadabra'));


推荐阅读