Javascript - 直接传递数组[0]对数组[0]由i = 0数组[i]在"和#34;声明?

时间:2016-05-13 00:30:58

标签: javascript coercion

致力于编程挑战。目标是创建一个函数,从前面开始,直到谓词(第二个参数)返回true,然后删除数组的元素(第一个参数)。"

dropElements([1, 2, 3, 4], function(n) {return n > 5;});

function dropElements(arr, func) {
    for (i = 0; i < arr.length-1; i++) {
        if(func(arr[i])) {
            break;
        }
        else { 
            arr.splice(i,1);
            i--;
        }
    }
    return arr; 
}

返回[4]这是错误答案

但是以下内容:

dropElements([1, 2, 3, 4], function(n) {return n > 5;});

function dropElements(arr, func) {
    for (i = 0; i < arr.length; i++) {
        if (func(arr[0])) {
            break;
        } 
        else {
            arr.shift();
            i--;
        }
    }
    return arr; 
}

返回[],这是正确答案

我手工编写了这一切,看起来它应该是相同的。是否与我不明白的强制有关?

1 个答案:

答案 0 :(得分:3)

您的第一个循环最多为arr.length-1,而第二个循环为arr.length