我正在为一对整数问题编写代码。我没有遇到逻辑问题,而是当调用我的contains函数时,它会终止我的循环。
function contains(val,pairs){
console.log(val + " " + pairs);
for(i=0 ; i < pairs.length; i ++){
if(pairs[i] === val){
return true;
}else if(pairs[i] > val){
//since its sorted... we havent found it if > val
return false;
}
}
return false;
}
function findSumPairs(intArr, sumTotal){
pairs = [];
sorted = intArr.sort();
for(i = 0 ; i < sorted.length; i++){
var c = (contains(sumTotal-sorted[i],sorted));
console.log(i);
//if(c === true){
// pairs.push(([i,sumTotal-sorted[i]]));
//}
}
return pairs;
}
console.log(findSumPairs([-1, 0, 1, 2], 3));
我的输出现在是:
4 -1,0,1,2
4
[]
但如果我删除包含表达式函数调用我得到它正确循环四个整数。辅助函数的返回是否以任何方式终止循环?
由于
答案 0 :(得分:1)
变量'i'是代码中的全局变量。 在'i'前面添加关键字'var'。检查下一个代码。
function contains(val,pairs) {
console.log(val + " " + pairs);
for (var i=0 ; i < pairs.length; i ++) {
if (pairs[i] === val){
return true;
} else if (pairs[i] > val) {
//since its sorted... we havent found it if > val
return false;
}
}
return false;
}
function findSumPairs(intArr, sumTotal) {
var pairs = [];
var sorted = intArr.sort();
for (var i = 0 ; i < sorted.length; i++) {
var c = (contains(sumTotal-sorted[i],sorted));
console.log(i);
//if(c === true){
// pairs.push(([i,sumTotal-sorted[i]]));
//}
}
return pairs;
}
console.log(findSumPairs([-1, 0, 1, 2], 3));
您可以在this page中找到有关javascript变量的信息。