@kirillleogky

Как узнать количество элементов в строке?

Есть строка 'aabbrbbabdb'
Как узнать колличество элементов в строке.
Выводить можно массив или строку не важно.
Например - '3a,6b,1d,1r'

Я сделал код но он только работает для чисел больше 2.

function getNumb (string) {
let words = string.split('').sort();

let count = 1;
let numbArr = [];
for (let i = 1; i < words.length - 1; i++) {
    if (words[i] == words[i - 1]) {
      count++;
    } else {
      numbArr.push(`${count}${words[i - 1]}`);
      words = words.slice(count - 1);
      count = 1;
    }
  }
  return numbArr;
}

getNumb ('aaabbrbbabdb');


Подскажите чтобы он и элементы которые одни тоже учитывал сделать.
  • Вопрос задан
  • 1009 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Array.from([...str].reduce((acc, n) => acc.set(n, -~acc.get(n)), new Map), n => n[1] + n[0])

или

str.split('').sort().join('').match(/(.)\1*/g).map(n => n.length + n[0])

или

Array.from(new Set(str), n => str.replace(RegExp(`[^${n}]`, 'g'), '').length + n)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@2bllk
function getNumb(string) {
    let arr = [];
    for (let i of [...new Set(string)]){
        arr[i] = string.split(i).length - 1;
    }
    return arr;
}
getNumb('aaabbrbbabdb'); // output: [a: 4, b: 6, r: 1, d: 1]
Ответ написан
@lloydbanks
const str = 'aabbrbbabdb'
const obj = str.split('').reduce((obj, l) => {
    if (!obj.hasOwnProperty(l)) obj[l] = 0
    obj[l] += 1

    return obj
}, {})

console.log(obj) // {a: 3, b: 6, r: 1, d: 1}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы