Вы можете хранить все свои буквы в строке и использовать indexOf
, чтобы получить оценку букв.
Также вы можете использовать один reduce
, чтобы получить оценку слова, и другой reduce
, чтобы найти слово сНаибольший балл:
const abc = 'abcdefghijklmnopqrstuvwxyz';
const high = (x) => x.split(/\s+/).reduce((a, w) => (w = [w, [...w].reduce((a, l) => a += 1 + abc.indexOf(l), 0)]) && ~~a[1] > w[1] ? a : w, [])[0]
console.log(high('lorem ipsum dolor'));
Обновление для тех, у кого проблемы с чтением однострочников,
очень читаемая версия с использованием двух вложенных циклов for
:
const abc = 'abcdefghijklmnopqrstuvwxyz';
const high = (x) => {
let words = x.split(/\s+/);
let best, maxscore = 0;
for (let word of words) {
let score = 0;
for (let letter of word) {
score += 1 + abc.indexOf(letter);
}
if (score > maxscore) {
best = word;
maxscore = score;
}
}
return best;
}
console.log(high('lorem ipsum dolor'));