Javascript - 在 "if" 语句中直接传递 array[0] 与 array[0] by i= 0 array[i] 有根本的不同吗?

Javascript - Is passing array[0] directly vs array[0] by i= 0 array[i] fundementally different inside an "if" statement?

正在应对编程挑战。 objective 是创建一个 "Drop[s] the elements of an array (first argument), starting from the front, until the predicate (second argument) returns 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; 
}

returns [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; 
}

returns [] 正确答案

我都是手写的,看起来应该是一样的。是不是和我不明白的强制有什么关系?

您的第一个循环是 arr.length-1,而第二个循环是 arr.length