while vs filter vs Function

HTML

<ul>
 <li><a href="https://teratail.com/questions/47779">JavaScript - eval(47779)|teratail</a></li>
</ul>

JavaScript

'use strict';
const tweetList = [
  '起きた',
  'はいふりがすき',
  'そういえばteratailでJSに関する質問ないか見てこよう',
  'JavaScript難しい…。',
  'vimとかemacsとかで争うのはやめろよ。最強は秀丸って結論出てるんだしさ。',
  'Hello, JavaScript!',
  'Hello, World!',
  '"\\"JavaScript\\" の略称は \\"JS\\" です。"'
];

const wordList = ['JS', 'JavaScript', '\\'];

function createArrayFilterByWhileWhile (words, useAnd) {
  if (useAnd) {
    return function arrayFilterByWhileWhile (tweets) {
      var results = [],
          i = 0,
          l = tweets.length,
          _words = words,
          m = _words.length,
          j, tweet;

      while (i < l) {
        tweet = tweets[i++];
        j = 0;

        wordlist: {
          while (j < m) {
            if (!tweet.includes(_words[j++])) {
              break wordlist;
            }
          }
          results.push(tweet);
        }
      }

      return results;
    };
  }

  return function arrayFilterByWhileWhile (tweets) {
    var results = [],
        i = 0,
        l = tweets.length,
        _words = words,
        m = _words.length,
        j, tweet;

    while (i < l) {
      tweet = tweets[i++];
      j = 0;

      while (j < m) {
        if (tweet.includes(_words[j++])) {
          results.push(tweet);
          break;
        }
      }
    }

    return results;
  };
}



function createArrayFilterByWhileRegExp (words, useAnd) {
  if (useAnd) {
    return function arrayFilterByWhileRegExp (tweets) {
      var results = [],
          i = 0,
          _words = words,
          l = _words.length,
          reg = '',
          tweet;

      while (i < l) {
        reg += '(?=[\\s\\S]*' + _words[i++].replace(/(?=[$()*+\-.?\[\]^{|}\\])/g, '\\') + ')';
      }

      i = 0;
      l = tweets.length;
      reg = new RegExp('^' + reg);

      while (i < l) {
        tweet = tweets[i++];

        if (reg.test(tweet)) {
          results.push(tweet);
        }
      }

      return results;
    };
  }

  return function arrayFilterByWhileRegExp (tweets) {
    var results = [],
       ...