使用javascript计算两个数组之间的相似性
在过去的4个小时里,我一直在使用javascript 问题是如何计算两个数组之间的相似性,如下所示:使用javascript计算两个数组之间的相似性,javascript,arrays,count,Javascript,Arrays,Count,在过去的4个小时里,我一直在使用javascript 问题是如何计算两个数组之间的相似性,如下所示: arrayA = [a,b,c,d,e,f,g]; arrayB = [c,d,e]; 答案应该是三个。目前我仅有的一段代码产生了一个无限循环:( 请提供帮助(跨浏览器解决方案)在这里: [请注意,.filter()方法在IE8和其他旧浏览器中不起作用,因此我建议使用以下方法] 1) 定义功能: function count_similarities(arrayA, arrayB) {
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;
}
如果你不介意旧浏览器的支持,我强烈建议lonesomeday的答案
希望有帮助。给你(跨浏览器解决方案)):
[请注意,.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;
}
如果你不介意旧浏览器的支持,我强烈建议lonesomeday的答案
希望对您有所帮助。您应该使用arrayA.indexOf(arrayB[i])检查一个数组中的每个元素是否存在于另一个数组中 如果它不返回-1,则增加一个count变量。
最后的计数是您的答案。您应该获取一个数组的每个元素,并使用arrayA.indexOf(arrayB[i])检查它是否存在于另一个数组中 如果它不返回-1,则增加一个count变量。
最后的计数是您的答案。一种方法是通过检查每个数组是否在
arrayB
中,然后获取新数组的长度来过滤arrayA
:
arrayA.filter(function(el) {
return arrayB.indexOf(el) >= 0;
}).length;
它使用:
注意,前两个在旧浏览器中不可用,因此需要使用给定链接中的代码填充。一种方法是通过检查每个数组是否在arrayB
中来过滤arrayA
,然后获得新数组的长度:
arrayA.filter(function(el) {
return arrayB.indexOf(el) >= 0;
}).length;
它使用:
注意,前两个在旧浏览器中不可用,因此需要使用给定链接中的代码填充。您可以使用$.inArray()函数来完成此操作
您可以使用$.inArray()函数来执行此操作
也许你可以展示产生无限循环的代码?也许你可以展示产生无限循环的代码?@l2aelba,因为它很漂亮@l2aelba因为它很漂亮!的确,这是一个很好的解决方案,不过请注意,filter
代码可以在IE8和之前的版本中使用,如果您将其与垫片一起添加。@GalV请记住,它们只在需要它们的浏览器中使用。如果你真的想支持IE8,那么你最好也不要使用Array#indexOf
。这确实是一个很好的解决方案,不过请注意filter
代码可以在IE8和之前使用,如果你加上垫片的话。@GalV好吧,记住它们只在需要它们的浏览器中使用。如果你真的想支持IE8,那么你最好也去掉Array#indexOf
。请扩展你的答案。在这种形式下,它不是很有用。请扩展您的答案。在这种形式下,它并不是真的有用。