比较2个字符串并返回不相等的字母数

时间:2013-08-31 13:07:41

标签: javascript string if-statement while-loop return

我正在尝试比较两个字符串的相等性,并返回不同地方的任何不同字母的数量,如果有任何例如 bob 购买将返回2.

我没有在其他地方找到任何其他的例子,所以我试图自己编写代码。我的下面的代码没有返回任何不确定它有什么问题?任何想法都赞赏。

由于

    function equal(str1, str2) {

    /*If the lengths are not equal, there is no point comparing each character.*/
    if (str1.length != str2.length) {
        return false;
    }

    /*loop here to go through each position and check if both strings are equal.*/

    var numDiffChar = 0;
    var index = 0;
    while (index < str1.length) {
        if (str1.charAt(index) !== str2.charAt(index)) {
            numDiffChar += index;
            index++;
        } else {

            index++;
        }
    }

 };

 equal("javascript", "JavaScript");

3 个答案:

答案 0 :(得分:0)

numDiffChar += index;

每次增加numDiffChar不会增加1,但值index。我猜你想做什么

numDiffChar++;

答案 1 :(得分:0)

除了Simon的答案,你还没有返回numDiffChar的值。此外,您始终希望增加index,因此我会将其放在if语句之外。如果字符串相等,你可以提前保释。建议:

function equal(str1, str2) {

    /* If the strings are equal, bail */
    if (str1 === str2) {
        return 0;
    }

    /*If the lengths are not equal, there is no point comparing each character.*/
    if (str1.length != str2.length) {
        return false;
    }

    /*loop here to go through each position and check if both strings are equal.*/
    var numDiffChar = 0;
    var index = 0;
    while (index < str1.length) {
        if (str1.charAt(index) !== str2.charAt(index)) {
            numDiffChar++;
        }
        index++;
    }
    return numDiffChar;
};

答案 2 :(得分:0)

function equal(str1,str2){

/*If the lengths are not equal, there is no point comparing each character.*/
if (str1.length != str2.length) {
    return false;
}

/*loop here to go through each position and check if both strings are equal.*/
else
{
var numDiffChar = 0;
var index = 0;
while (index < str1.length) {
    if (str1.charAt(index) !== str2.charAt(index)) {
        numDiffChar += index;
        index++;
    } else {

        index++;
    }
}
}

};

相等(“javascript”,“JavaScript”);