我有一个工作数组比较(用不同类型的代码测试),看起来像这样:
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"。
我无法解释为什么我的函数在这种情况下不起作用。有人可以帮助我吗?它找不到任何匹配项,即使它们是匹配项,也错过了所有内容。
我认为是这一行:
if (b[j] == a[j])
应该b[i]
b[j]
吗?由于a
大于b
,使用j
索引器将尝试在b
结束后引用。
您好,检查下面的代码,即使 a 大于 b 或 b 大于 a 也可以正常工作
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);
}