致力于编程挑战。目标是创建一个函数,从前面开始,直到谓词(第二个参数)返回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;
}
返回[]
,这是正确答案
我手工编写了这一切,看起来它应该是相同的。是否与我不明白的强制有关?
答案 0 :(得分:3)
您的第一个循环最多为arr.length-1
,而第二个循环为arr.length
。