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 |