Javascript: Как посчитать, как часто символы находятся в данной строке и вернуть их в виде чисел? - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь подсчитать, как часто каждый отдельный символ входит в данную строку, и вернуть их как число.

Так, например, давайте возьмем строку "HelloWorld".

HELLOWORLD Существует только один H - поэтому необходимо вернуть 1, а H удалить.

ELLOWORLD Имеется один E - поэтому необходимо вернуть 1 и удалить E.

LLOWORLD Есть три L- поэтому следует вернуть 3 и удалить все L.

OWORD Есть два O - поэтому следует вернуть 2 и удалить все O.

WRD Есть только один из символов - так 11 1 должен быть возвращен.

В конце я хочу, чтобы все числа были объединены, поэтому результат будет:

1132111 (это может быть либо строка, либо число).

Возможно ли это?

Спасибо за прочтение, и если у вас есть какие-либо советы, я с удовольствием прочитал бы об этом!

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Более чистый способ с уменьшением

function occurrences(str) {
  str = str.split('');

  var occurrence = str.reduce((acc, cv) => {
    acc[cv] = ++acc[cv] || 1;
    return acc
  }, {})

  return Object.values(occurrence).join('')
}

console.log(occurrences('helloworld'))
0 голосов
/ 06 февраля 2019

Попробуйте этот метод с простыми циклами while

function count(str){
	str = str.split('');
        //this will returned
	let result = ''
	let count = 1;
	while(str.length !== 0){
		count = 1;
                //while there is some duplicate of letter in str
		while(str.indexOf(str[0]) !== str.lastIndexOf(str[0])){
			count++;
                        //remove the last occurence of the duplicate
			str.splice(str.lastIndexOf(str[0]),1)
		}
                //after this all the duplicates of first letter are removed so we remove the first letter from str
		str.shift();
		result += count;
	}
	return result;
}
console.log(count("helloworld"));
...