成对的整数语法

时间:2015-09-16 00:46:47

标签: javascript

我正在为一对整数问题编写代码。我没有遇到逻辑问题,而是当调用我的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
[]

但如果我删除包含表达式函数调用我得到它正确循环四个整数。辅助函数的返回是否以任何方式终止循环?

由于

1 个答案:

答案 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变量的信息。