Использование CharCodeAt с индексом, а не с предложением - PullRequest
0 голосов
/ 20 ноября 2018

Этот вопрос ранее задавался разными способами, но не так, как этот.Я хочу добиться с помощью ES5 или ES6 написать функцию, которая вычисляет слово с наивысшей оценкой, используя system A = 1, B = 2, C = 3 etc.. Строка будет содержать только один пробел между словами и пунктуация не будет.

Я придумал эту функцию.

var wordScoreCalculator = s =>
  s.toLowerCase().
  split('').
  map(s => s.charCodeAt(0)-0x60).
  filter(c => 1 <= c && c <= 26).
  reduce((x,y) => x+y, 0);

wordScoreCalculator('I live in this world');

В настоящее время charCodeAt сопоставляет целое предложение и вычисляет все слова вместе до 208.

Я хочу, чтобы он работал с индексом, чтобы он вычислял каждое слово индивидуально и отображалтолько самый высокий балл.

В этом случае должно отображаться 72. Как этого можно достичь?

Большое спасибо!

1 Ответ

0 голосов
/ 20 ноября 2018

Вам необходимо дополнительно отобразить каждое слово , сначала разделив его пробелом.Кроме того, потому что, согласно условию 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'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...