Javascript-通过i=0直接传递array[0]与array[0],array[i]在“;如果“;陈述

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

本文关键字:array 陈述 如果 通过 Javascript-      更新时间:2023-09-26

处理编程难题。目标是创建一个函数,"从前面开始删除数组(第一个参数)的元素,直到谓词(第二个参数)返回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; 
}

返回正确答案的[]

我用手写出来的,看起来应该是一样的。这是不是与我不理解的胁迫有关?

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