Вам необходимо дополнительно отобразить каждое слово , сначала разделив его пробелом.Кроме того, потому что, согласно условию The string will only contain a single space between words and there will be no punctuation
, нет необходимости в filter
, так как кажется, что слова всегда будут содержать буквы алфавита:
var wordScoreCalculator = s =>
s.toLowerCase()
.split(' ')
.map(word => word
.split('')
.map(char => char.charCodeAt(0)-0x60)
.reduce((x,y) => x+y, 0)
)
.reduce((a, b) => Math.max(a, b))
console.log(wordScoreCalculator('I live in this world'));
console.log(wordScoreCalculator('I live in this world zzzz'));
Или, может быть, абстрагировать операцию, которая отображает слова в их значения в свою собственную функцию, для лучшей читаемости:
const wordToScore = word => word
.split('')
.map(char => char.charCodeAt(0)-0x60)
.reduce((x,y) => x+y, 0);
const bestWordCalculator = s =>
s.toLowerCase()
.split(' ')
.map(wordToScore)
.reduce((a, b) => Math.max(a, b));
console.log(bestWordCalculator('I live in this world'));
console.log(bestWordCalculator('I live in this world zzzz'));