Количество повторяющихся символов в строке
Есть строка, необходимо посчитать кол-во повторяющихся символов в ней и вернуть результат в виде двумерного массива в порядке появления символов.
'abracadabra' == [['a', 5], ['b', 2], ['r', 2], ['c', 1], ['d', 1]]
Написал такой код:
const str = 'abracadabra';
let orderedCount = text => {
return Object.entries(text.split('').reduce((acc, el) => {
acc[el] = (acc[el] || 0) + 1;
return acc;
}, {}));
}
console.log(orderedCount(str))
К сожалению, в случае строки, состоящей из цифр, он их в результате сортирует. Как избавиться от этой сортировки?
Ответы (1 шт):
Автор решения: Stepan Kasyanenko
→ Ссылка
Дело в том, что современные браузеры сортируют порядок числовых ключей в объекте при обходе.
Что бы этого избежать, не используйте объект, используйте Map.
Например:
const str = '4321';
let orderedCount = text => {
return Array.from(text.split('').reduce((acc, el) => {
acc.set(el, (acc.get(el) || 0) + 1);
return acc;
}, new Map()));
}
console.log(orderedCount(str));