Как оптимальнее вывести процентное соотношение каждого символа в строке?

Есть такая функция которая каждый символ выводит в отдельный массив
function orderedCount(str) {
    const symbols = new Map();
    for (const c of str) {
        const currCount = symbols.get(c) || 0;
        symbols.set(c, currCount + 1);
    }
    const orderedSymbols = [...symbols.entries()];
    return orderedSymbols;
}


Хотелось бы отрисовать объект который в виде ключа будет хранить символ а в виде значения процентное соотношение от общего кол-ва символов в строке, возможно ли такое сделать ?
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
Starina_js
@Starina_js
full-stack web dev
Может как-то так?
function orderedCount2(str) {
    const symbols = new Map();
    for (const c of str) {
      const currCount = symbols.get(c) || 0;
      symbols.set(c, currCount + 1);
    }
    const totalCount = str.length;
    const orderedSymbols = {};
    for (const [symbol, count] of symbols.entries()) {
      orderedSymbols[symbol] = (count / totalCount) * 100;
    }
    return orderedSymbols;
  }
input: 
orderedCount("hello world")
output

{
  h: 9.090909090909092,
  e: 9.090909090909092,
  l: 27.27272727272727,
  o: 18.181818181818183,
  ' ': 9.090909090909092,
  w: 9.090909090909092,
  r: 9.090909090909092,
  d: 9.090909090909092
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
sharp97
@sharp97
не фонтан но брызги есть
Берешь получаешь length символов , птм делаешь пропорцию. Например возьмём слово "Игорь" х= 100•1:5 , соответственно 20% составляет буква "И" то есть тут берётся 100% потом индекс символа и длина слова length.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы