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 = [],
...