将两个字符串比较为相同的值

时间:2011-10-29 23:13:51

标签: javascript

// Write a program to check whether or not two arrays are identical in size, and hold identical values

string1 = prompt("String 1?");
string2 = prompt("String 2?");

compareNum = 0;

for(i=0; i<string1.length; i++)
{
    for(j=i; j<string2.length; j++)
    {
    if (string1.charAt(i) == string2.charAt(j))
{
        compareNum++;
        break;
}
    }
};

alert("We found " + compareNum + " identical value(s).");

我已经设法构建了一个相对简单的字符串比较程序,但现在我遇到的问题是它输出的结果。

例如,如果我输入“Jeansy”和“Jeansy” - 我得到“我们发现了6个相同的值”的回答。

如果我输入“Molanza”和“Molanza” - 我得到“我们发现了9个相同的值”的回复。

当然应该只有7?

或者'a'被计算两次?无论如何我可以否定这个吗?

顺便说一句,我正在考虑所有字符串。

提前致谢!

2 个答案:

答案 0 :(得分:5)

你将string1中的每个字母与string2中的每个字母进行比较。如果有重复的字母,您将获得重复的结果。

试试这个:

string1 = prompt("String 1?");
string2 = prompt("String 2?");
compareNum = 0; // why are you using the Number contructor? Unneeded.

l = Math.min(string1.length, string2.length);
for( i=0; i<l; i++) {
    if( string1.charAt(i) == string2.charAt(i)) compareNum++;
}

// do something with compareNum.

答案 1 :(得分:2)

您循环遍历字符串1中的每个字符并将其与字符串2中的每个字符进行比较 - 但是您将在字符串2中循环字符串1中的每个字符。

每个字符串的索引应该相同;你不需要两个循环。

如何处理长度不同的字符串取决于您的要求。