1Day 1Practice

[codewars] Count characters in your string

Bittersweet- 2022. 7. 8. 09:45
728x90

Instructions.

The main idea is to count all the occurring characters in a string. If you have a string like aba, then the result should be {'a': 2, 'b': 1}.

What if the string is empty? Then the result should be empty object literal, {}

 

중요한 것은 모든 숫자열의 숫자를 세는 것이다. 예를들어 aba 라는 문자열이 있을 경우, {'a': 2, 'b':1} 이라는 산출물을 가지게 될 것이다.

빈 문자열의 경우 빈 객체 리터럴을 반환해야 한다.

 


 

Solution.

function count(string) {
  const arr = string.split('');
  const result = arr.reduce((accu, curr) => {
  	accu[curr] = (accu[curr] || 0) + 1;
    return accu;
  }, {})
  
  return result;
}

* reduce - 배열(arr)의 각 element에 대해서 실행되는 callback 함수이고 이 함수의 리턴값은 다음 element에 대한 callback 함수 실행 시 파라미터(accumulator)로 전달됨. (배열을 순차적으로 순회하면서 배열의 값을 누적하는 데 유용함)

let value = arr.reduce(function(accumulator, currentValue[, currentIndex[, array]]) {
  // ... 
}[, [initialValue]]);
  • accumulator : 이전 element에 대한 callback 함수의 리턴값
  • currentvalue : 현재 처리중인 배열 element
  • currentIndex(opt) : 현재 처리중인 배열 index
  • array(opt) : 배열 전체
  • initialvalue(opt) : initialValue를 지정하지 않으면 callback 함수를 처음 실행 시 accumulator의 값은 배열의 첫번째 값(arr[0])이 되고 currentIndex는 1이 되며, 지정할 경우 accumulator의 값은 initialValue가 되고 currentIndex는 0이 된다. (초기값을 지정하는 것을 권장한다)
initialvalue accumulator currentvalue currentIndex
지정 initialValue arr[0] 0
미지정 arr[0] arr[1] 1

 

참고 -https://hianna.tistory.com/408

 

Best Solution.

function count(string) {
  var count = {};
  string.split('').forEach(function(s) {
    count[s] ? count[s]++ : count[s] = 1;
  });
  return count;
}

'1Day 1Practice' 카테고리의 다른 글

[codewars] Simple Pig Latin  (0) 2022.08.02
[codewars] Moving Zeros To The End  (0) 2022.07.12
[codewars] Human Readable Time  (0) 2022.07.07
[codewars] First non-repeating character  (0) 2022.06.23
[codewars] Valid Parentheses  (0) 2022.06.15