挑战:
删除数组(第一个参数)的元素,从左边开始,直到回调函数(第二个参数)return true就停止。
第二个参数,func,是一个函数。用来测试数组的第一个元素,如果返回fasle,就从数组中抛出该元素(注意:此时数组已被改变),继续测试数组的第一个元素,如果返回fasle,继续抛出,直到返回true。
最后返回数组的剩余部分,如果没有剩余,就返回一个空数组。
例如:
drop([1, 2, 3, 4], function(n) {return n >= 3;}) 应该返回 [3, 4]。
drop([0, 1, 0, 1], function(n) {return n === 1;}) 应该返回 [1, 0, 1]。
drop([1, 2, 3], function(n) {return n > 0;}) 应该返回 [1, 2, 3]。
drop([1, 2, 3, 4], function(n) {return n > 5;}) 应该返回 []。
drop([1, 2, 3, 7, 4], function(n) {return n > 3;}) 应该返回 [7, 4]。
drop([1, 2, 3, 9, 2], function(n) {return n > 2;}) 应该返回 [3, 9, 2]。
答案:
方法 | 描述 |
---|---|
filter() | 检测数值元素,并返回符合条件所有元素的数组。 |
slice() | 从某个已有的数组返回选定的元素 |
indexOf() | 检索字符串。 |
function drop(arr, func) {
// Drop them elements.
var dArr = arr.filter(func);
if (dArr.length > 0) {
return arr.slice(arr.indexOf(dArr[0]));
} else {
return [];
}
}
drop([1, 2, 3], function(n) {return n < 3; });
运行结果:
[1,2,3]
在线测试: