Function to find the shortest word in an array, where not every element is a string
It seems odd to me that you loop through the array twice, once with every and once with filter. Why not just filter it and check if the filtered array has any elements? Also is there a reason why you used two different methods to check if the elements were strings? One more thing, I would have written the filter method as:

arr = arr.filter(function(e) { 
  return typeof e == 'string';
});


If you really want to do this using a single loop you could do something like:



    function findShortestWordAmongMixedElements(arr) {
      return arr.reduce( function(shortest, e) {
        return (typeof e == 'string') &amp;&amp; (shortest=='' || e.length &lt; shortest.length) ? e : shortest;
      }, '');
    };
    
    console.log( findShortestWordAmongMixedElements([
       1, 'longer', 2, 'short', 3, 'longest'
    ]) );