Drop it
让我们来丢弃数组(arr)的元素,从左边开始,直到回调函数return true就停止。
第二个参数,func
,是一个函数。用来测试数组的第一个元素,如果返回fasle,就从数组中抛出该元素(注意:此时数组已被改变),继续测试数组的第一个元素,如果返回fasle,继续抛出,直到返回true。
最后返回数组的剩余部分,如果没有剩余,就返回一个空数组。
Arguments object思路:
(1)先获得数组的长度(在后面的循环中数组的长度是变化的);
(2)根据数组的长度设计一个for循环(不能叫遍历了);
(3)获取当前数组的第一个元素(这里shift操作其实已经将数组改动了),如果符合func函数,就将刚才拿掉的第一个元素还给数组,
这么一来只要遇到第一个符合func函数的元素,arr数组就不会再变化了(一个减去,一个又添加回来),最后返回arr数组;
知识点:
(1)Array.shift()方法从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。
(2)Array.unshift()方法将一个或多个元素添加到数组的开头,并返回新数组的长度。
代码:
1 function drop(arr, func) { 2 // Drop them elements. 3 var l=arr.length; 4 for(var i=0;i<l;i++){ 5 var fir=arr.shift(); 6 if(func(fir)){ 7 arr.unshift(fir); 8 } 9 } 10 11 return arr; 12 } 13 14 drop([1, 2, 3, 4,5], function(n) {return n > 4;});