You’re misunderstanding the point, and your conditions can’t possibly work.

So the function is supposed to take any array and any function. You don’t check exactly what array it is or what function it is. That completely defeats the point of having the function. What you’re doing is like doing this:

```
function add(a, b) {
if (a === 0 && b === 0) {
return 0;
} else if (a === 0 && b === 1) {
return 1;
} else if (a === 1 && b === 0) {
return 1;
} else if (a === 1 && b === 1) {
return 2;
} else if (a === 1 && b === 2) {
return 3;
}
// and so on for every single possible
// number
}
```

When it should be this:

```
function add (a, b) {
return a + b;
}
```

Secondly, your conditions cannot work. They are always false. `arr`

is never exactly equal to what your comparing it to: `arr`

is a reference to some chunk of memory that in turn has references some values, and that chunk of memory is not the same as one that represents another array. It’s irrelevant that the arrays have the same values, the arrays themselves are not the same. And you can’t compare functions, that just flat out can’t work.

Finally, `filter`

is not the correct thing to use here: that’s not what the challenge is asking you to do.

It says go through the array `arr`

, running the function `func`

for each item. Once that function returns `true`

, return what’s left of the array. The easiest way is to use a loop.