@ Решение CertainPermance гораздо более элегантно (и я считаю его производительным), чем это, но, поскольку я написал ответ, я подумал, что с таким же успехом могу его вставить.
Это довольно похоже, на самом деле,хотя в этом случае мы получаем индекс слова и используем его для замены, что, на мой взгляд, было необходимо на момент написания статьи.Теперь, глядя на лучшее решение, я понимаю, что такая проверка не нужна, так как самое длинное слово в строке не будет содержаться ни в каких других словах, поэтому просто и безопасно просто выполнить его замену.
const data = "this/ is an example abc/def/fgh/uio to give you an example";
const getLongestWordIndex = stringIn => stringIn
.split(' ')
.reduce(
(prev, curr, i) => curr.length > prev.length ? {
index: i,
length: curr.length
} : prev,
{
length: -1,
index: -1
}
).index
const replaceLongestWord = (sentence, replacer) => {
const longestWordIndex = getLongestWordIndex(sentence);
const words = data.split(' ');
return Object.values({
...words,
[longestWordIndex]: replacer(words[longestWordIndex])
}).join(' ')
}
const wordReplaceFunction = word => word.replace(/\//g, '+')
const result = replaceLongestWord(data, wordReplaceFunction);
console.dir(result)