I think you don't need the initial value here. if there is no initial value, reduce already gives the first and second term; if there is only one term, reduce automatically return this term without even calling the function, so you don't even need the ternary operator.

So this can be simplified to:

```javascript
// let's find the longer term
filter.filterValue = terms.reduce(function(initial, term) {
  // Add to array of lowercased terms for use as
  // a criteria list for isMatch.
  lower.push(term.toLowerCase());

  // Reduce to the longest possible term provided.
   return term.length > initial.length ? term : initial;
});
```