Я пытаюсь выяснить, как решить этот ката на CodeWars.
Функция high
получает строку и возвращает слово с наибольшим «счетом», согласно которому присутствуют буквы в слове. Буквы получают оценку в зависимости от их положения в алфавите. Итак a = 1 point, b = 2 points, c = 3 points
и т. Д.
Я думаю, что имеет смысл создать объект, в котором всем буквам алфавита присвоено значение:
Если буква в слове появляется в alphabetScore
, это слово получит свои «точки» и перейдет к следующей букве в слове, увеличив общее количество точек слова.
У меня есть:
function high(string) {
let words = string.split(" ");
let wordScore = 0;
const alphabetScore = {
a: 1,
b: 2,
c: 3,
d: 4,
e: 5,
f: 6,
g: 7,
h: 8,
i: 9,
j: 10,
k: 11,
l: 12,
m: 13,
n: 14,
o: 15,
p: 16,
q: 17,
r: 18,
s: 19,
t: 20,
u: 21,
v: 22,
w: 23,
x: 24,
y: 25,
z: 26
}
let word = words[i];
let wordCount = 0;
//loop through all words in the string
for (let i = 0; i < words.length; i++) {
let word = words[i];
//loop through all characters in each word
for (let j = 0; j < word.length; j++) {
let value = alphabetScore[j];
wordCount += alphabetScore[value];
}
}
return wordCount;
}
console.log(high("man i need a taxi up to ubud"));
И это возвращает ошибку, говорящую
я не определен
в let word = words[i]
- как еще тогда я определю слово?
Если возможно решить эту ката с моей существующей логикой (используя for-loop), пожалуйста, сделайте это.
РЕДАКТИРОВАТЬ : изменено wordCount = alphabetScore.value++;
на wordCount += alphabetScore[value];
РЕДАКТИРОВАТЬ 2 : теперь возвращается NaN
РЕДАКТИРОВАТЬ 3 : последняя попытка:
function myScore(input) {
let key = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
"k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
"w", "x", "y", "z"
];
let bestWord = "";
let bestScore = 0;
let words = input.split(" ");
for (let i = 0; i < words.length; i++) {
let score = 0;
let word = words[i];
for (let j = 0; j < word.length; j++) {
let char = word[j];
score += (key.indexOf(char) + 1);
}
if (score > bestScore) {
bestScore = score;
bestWord = word;
}
}
return bestWord;
}
ReferenceError: высокая не определена
в Test.describe ._