我有一个工作数组比较(使用不同类型的代码测试),如下所示:
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”。
我无法解释为什么我的功能在这种情况下不起作用。有人可以帮我吗?它没有找到任何匹配,一切都是错过,即使它们是匹配。
答案 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);
}