[JS] 논리연산자로 max string 찾기

Mia:)·2021년 2월 3일
0
const string = "Hello There!";
const charMap = {};
let max = 0;
let maxChar = '';

for(let char of string){
  charMap[char] = charMap[char]+1 || 1;
}

for (let char in charMap){
  if(charMap[char] > max){
    max = charMap[char];
    maxChar = char;
  }
}

console.log(maxChar)

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/%EB%85%BC%EB%A6%AC_%EC%97%B0%EC%82%B0%EC%9E%90(Logical_Operators)

charMap[char] 값이 있으면 거기에 +1
false이면 charMap[char] 1을 추가.

MDN에서 보면
a && b => a값이 true이면 b값을 리턴, a 값이 false이면, a값 리턴
a || b => a값이 true이면 a를 리턴, a값이 false이면 b 리턴.

charMap[char] = charMap[char]+1 || 1;

H의 경우 false이므로, H: 1
e의 경우 fasle이므로 e:1
l의 경우 false이므로 l:1
l의 경우 true이므로 l:2
o의 경우 false 이므로 o:1

H값이 false이 이유는 undefined+1 은 NaN값이고, NaN값은 falsy값이고, 그래서 or연산자가 그다음을 리턴하기 때문.

0개의 댓글