@bakunovdo

Как посчитать количество повторений символов в строке?

Необходимо сосчитать количество повторяемых символов.
Выходные данные для abracadabra:

[['a', 5], ['b', 2], ['r', 2], ['c', 1], ['d', 1]]

Из строки у меня пока только получается сделать в таком виде, для всех символом:

[["a", 1], ["b", 1],

Не знаю, как могу проверить что в массиве есть, массив с каким то символом...

var orderedCount = function (text) {
  arr = []
  text.split('').forEach( (s,i) => {
    if (!arr.includes([s])) {
      arr.push([s, 1])
    } else {
       ++arr[i][1]
    }
  })
  return arr;
}
  • Вопрос задан
  • 5885 просмотров
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
Object.entries(str.split('').reduce((acc, n) => (acc[n] = (acc[n] ?? 0) + 1, acc), {}))

или

[...[...str].reduce((acc, n) => acc.set(n, -~acc.get(n)), new Map)]

или

Object.values(str).sort().join('').match(/(.)\1*/g)?.map(n => [ n[0], n.length ]) ?? []

или

Array.from(new Set(str), n => [ n, str.split(n).length - 1 ])
Ответ написан
Комментировать
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;
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Воспользуйтесь для подсчета символов обычным объектом, где ключи - буквы, а значения - их количество, а уже потом сформируйте из него массив.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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