gpt4 book ai didi

javascript - 使用 CharCodeAt 与索引而不是句子

转载 作者:行者123 更新时间:2023-12-03 00:42:33 26 4
gpt4 key购买 nike

这个问题以前曾通过不同的方式提出过,但与这个不同。我想通过使用 ES5 或 ES6 编写一个函数来实现,该函数使用系统 A = 1、B = 2、C = 3 等计算得分最高的单词。 该字符串将只包含一个单词之间只有一个空格,并且没有标点符号。

我想出了这个功能。

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。如何实现这一点?

非常感谢!

最佳答案

您需要另外映射每个单词,首先按空格分割。另外,因为根据条件字符串在单词之间仅包含一个空格并且没有标点符号,所以不需要过滤器,因为它听起来像单词将始终包含字母字符:

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'));

关于javascript - 使用 CharCodeAt 与索引而不是句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53392123/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com