Первая ошибка в вашем скрипте состоит в том, что вы сохраняете неправильное значение в mycalc
:
mycalc = calc[f]
Поскольку вы хотите, чтобы mycalc
был index , вышеприведенноебыл
mycalc = f
Теперь вы получите результат, но ваш код на самом деле прикладывает немало усилий, чтобы найти символ в верхнем регистре , который чаще всего повторяется , а не first .
В вашем сравнении следовало использовать toUpperCase
с обеих сторон сравнения, иначе строчные буквы никогда не будут совпадать.
Чтобы получитьсимвол, который был повторен чаще всего , вы можете использовать Map
(чтобы отслеживать количество, как вы сделали в calc
):
function mostRepeated(str) {
const map = new Map;
let result;
let maxCount = 0;
for (let ch of str) {
ch = ch.toUpperCase();
let count = (map.get(ch) || 0) + 1;
map.set(ch, count);
if (count > maxCount) {
maxCount = count;
result = ch;
}
}
return result;
}
var word = "MBXAYMZAXmZYxxxxxxxxxxmBxAYMZaXmZY";
console.log(mostRepeated(word));
Обратите внимание, что вам лучше использовать параметры функции и локальные переменные.Объявление ваших переменных как глобальных не считается лучшей практикой.