我在过去4个小时内一直停留在一段JavaScript上!

问题是我如何像这样计算两个数组之间的相似性:

arrayA = [a,b,c,d,e,f,g];
arrayB = [c,d,e];


答案应该是三个。我目前仅有的一段代码会产生一个无限循环:(

求助

最佳答案

您可以使用(跨浏览器解决方案):

[请注意,.filter()方法在IE8和其他旧版浏览器中将不起作用,因此我建议采用以下方法]

1)定义功能:

function count_similarities(arrayA, arrayB) {
    var matches = 0;
    for (i=0;i<arrayA.length;i++) {
        if (arrayB.indexOf(arrayA[i]) != -1)
            matches++;
    }
    return matches;
}


2)称之为:

var similarities = count_similarities(arrayA, arrayB);
alert(similarities + ' matches found');


如果您不关心旧版浏览器的支持,我强烈建议lonesomeday的答案。

希望能有所帮助。

10-07 18:06