Build dict for /expand. Replace multiple spaces with single space.
This commit is contained in:
parent
382579ba3f
commit
af56ffbbb3
|
@ -1,15 +1,28 @@
|
||||||
function expand(words, text) {
|
function expand(words, text) {
|
||||||
|
|
||||||
const letters = text.trim().toLowerCase().split("");
|
const letters = text.trim().toLowerCase().split("");
|
||||||
|
// Build a dictionary with lowercase letters as keys
|
||||||
|
const dict = {};
|
||||||
|
words.forEach(word => {
|
||||||
|
|
||||||
|
if (word == "")
|
||||||
|
return;
|
||||||
|
const initial = word.split("")[0].toLowerCase();
|
||||||
|
if (initial in dict)
|
||||||
|
dict[initial].push(word);
|
||||||
|
else
|
||||||
|
dict[initial] = [word];
|
||||||
|
|
||||||
|
});
|
||||||
return letters.map((letter) => {
|
return letters.map((letter) => {
|
||||||
|
|
||||||
const wordsWithLetter = words.filter(i => i.match(RegExp(`^${letter}`, "i")));
|
if (!(letter.toLowerCase() in dict))
|
||||||
if (! wordsWithLetter.length)
|
|
||||||
return letter;
|
return letter;
|
||||||
|
const wordsWithLetter = dict[letter.toLowerCase()];
|
||||||
const word = wordsWithLetter[Math.floor(Math.random() * wordsWithLetter.length)];
|
const word = wordsWithLetter[Math.floor(Math.random() * wordsWithLetter.length)];
|
||||||
return word;
|
return word;
|
||||||
|
|
||||||
}).reduce((acc, cur) => acc + " " + cur);
|
}).reduce((acc, cur) => acc + " " + cur).replace(/\s{2,}/, " ");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue