数组比较不起作用

时间:2017-01-26 13:21:58

标签: javascript arrays compare

我有一个工作数组比较(使用不同类型的代码测试),如下所示:

var a = [0,1,2]
var b = [1,2]

var match = []
var miss = []

func(a,b, match, miss);

function func(a, b, matches, misses) {		
  for (var i=0; i<b.length; i++) {
    for (var j=0; j<a.length; j++) {	
      if (b[i] == a[j]) {
        console.log("Found");
        matches.push(b[i])
      } 
    }
  }
  console.log("Matches: " + matches); 
  console.log("Misses: " + misses);
}

通常很好。但是这次没有。我有两个不同大小的数组(a大于b),可以有不同的内容,如“100.AB 12345”。

我无法解释为什么我的功能在这种情况下不起作用。有人可以帮我吗?它没有找到任何匹配,一切都是错过,即使它们是匹配。

2 个答案:

答案 0 :(得分:1)

我认为这就是这条线:

if (b[j] == a[j])

b[j]b[i]吗?由于a大于b,使用j索引器会在b结束后尝试引用。

答案 1 :(得分:0)

你好检查下面的代码,即使a大于b或b大于

,它也能正常工作

var a = ['a','ab','c','d','e'];
var b = ['ef','f','ab','a'];
var a1,b1;
var match = [];
var miss = [];
var temp_a=a.length;
var temp_b=b.length;
if( temp_a > temp_b){
	a1=b;
  b1=a;
}else{
	a1=a;
	b1=b;
}
func(a1,b1, match, miss);

function func(a, b, matches, misses) {		
		for (var i=0; i<b.length; i++) {
			for (var j=0; j<a.length; j++) {	
				if (b[i] == a[j]) {
					console.log("Found");
					matches.push(b[i])
				} 
			}
		}
	console.log("Matches: " + matches); 
	console.log("Misses: " + misses);
}