[오답노트] iolsogram

daun·2022년 6월 16일
0
function isIsogram(str) {
  // TODO: 여기에 코드를 작성합니다.
  if (str.length === 0) {
    return true;
  }
  let lowStr = str.toLowerCase();
  for (let i = 0; i < lowStr.length; i++) {
    //console.log(lowStr[i]);
    for (let j = i + 1; j < lowStr.length; j++) {
      //console.log(lowStr[j]);
      if (lowStr[i] === lowStr[j]) {
        console.log(lowStr[i], lowStr[j]);
        return false;
      }
    }
  }
  return true;
}

let output = isIsogram('aba');
console.log(output); // false

난 이중 포문으로 풀었는데,
완전 띠용한 문법이 레퍼런스로 나왔다.

레퍼런스 해석
for문에서 첫번째 반복할 때
10번째 코드에서 벌어지는 일!

function isIsogram(str) {
  if (str.length === 0) {
    return true;
  }
  let cache = {}; //냅다 빈객체 선언
  let strLowered = str.toLowerCase();
  for (let i = 0; i < strLowered.length; i++) {
    if (cache[strLowered[i]]) { // 빈 객체에 문자열을 넣어?
    // 콘솔에 찍어보면 undefiend가 나옴, 당연함
    // 왜냐하면, if({a})를 넣은 모양인데 a 키에 해당하는 값이 없다!
    // 따라서, if(falsy)한 값이 들어오고
    // if문의 조건문이 거짓이므로 아래 return은 건너뛴다.
      return false;
    }
    cache[strLowered[i]] = true;
    // return을 건너뛴 {a}는 여기에서 {a:true} 값을 할당 받는다.
  }
  return true;
  //그리고 true를 리턴한다.
}
profile
Hello world!

0개의 댓글