**Tell us what’s happening:**

I have issues in two test cases

1)

```
dropElements([0, 1, 0, 1], function(n) {return n === 1;})
```

This should return `[1,0,1]`

however I am getting `[1,1]`

and to be honest I don’t understand why should i get 0 in here logically …shouldn’t we only need to return those n whose value is 1.

```
dropElements([1, 2, 3, 9, 2], function(n) {return n > 2;})
```

Here I should be getting `[3,9,2]`

but I am getting `[3,9]`

again that doesn’t make sense to me logically …aren’t we selecting n that are greater than 2 then why 2 should be in returned list ?

**Your code so far**

```
function dropElements(arr, func) {
let l=[];
for(let i=0;i<arr.length;i++){
if(func(arr[i])){
l.push(arr[i]);
}
}
console.log(l);
return l;
}
dropElements([1, 2, 3], function(n) {return n < 3; });
dropElements([1, 2, 3, 4], function(n) {return n >= 3;});
dropElements([0, 1, 0, 1], function(n) {return n === 1;});
dropElements([1, 2, 3, 9, 2], function(n) {return n > 2;})
```

**Challenge:** Intermediate Algorithm Scripting - Drop it

**Link to the challenge:**