240726 for...in

신한별·2024년 7월 26일

💪 매일 기록

목록 보기
28/97

for...in

for...in 문을 활용하면 객체 내부에 있는 모든 프로퍼티들을 하나씩 다룰 수 있다
특정한 변수를 만들고 in 키워드 다음에 반복될 객체를 넣어줌

let person = {
  name: "민수",
  bornYear: 2002,
  isVeryNice: true,
  balance: null,
  pet: "또리"
}

for (let key in person) {
  console.log(key); // 
  console.log(person[key]); 
}

for...in을 사용할 때 주의점 😑

정수형 프로퍼티 네임
객체는 정수형 프로퍼티 네임을 오름차순으로 먼저 정렬하고, 나머지 프로퍼티들은 추가한 순서대로 정렬하는 특징이 있음

let myObject = {
  3: '정수3',
  name: 'minsu',
  1: '정수1',
  birthDay: '1999.5.5',
  2: '정수2',
};

for (let key in myObject) {
  console.log(key);
}

출력 결과

1
2
3
name
birthDay

3, name, 1, birthday, 2순서로 프로퍼티가 작성되었음에도 불구하고
for...in문이 실행될 때는 오름차순으로 정렬이 되어 출력.
정수형 프로퍼티에 따옴표를 붙여 문자열처럼 만들더라도, 정렬방식은 동일하게 처리됨 🙄

실습

let hyesoonScore = {
  '데이터 모델링의 이해': 10,
  '데이터 모델과 성능': 8,
  'SQL 기본': 22,
  'SQL 활용': 18,
  'SQL 최적화 기본 원리': 20,
};

let minsoonScore = {
  '데이터 모델링의 이해': 14,
  '데이터 모델과 성능': 8,
  'SQL 기본': 12,
  'SQL 활용': 4,
  'SQL 최적화 기본 원리': 16,
};

설명

자격증 합격 기준은 총점이 60점 이상
파라미터로 객체를 전달받고, 각 과목들의 점수를 모두 합산해서 시험 결과를 알려주는 passChecker 함수를 완성
합격 기준을 충족할 경우 '축하합니다! 합격입니다!' 라는 문자열을, 충족하지 못할 경우 '아쉽지만 불합격입니다..'라는 문자열을 출력

풀이

function passChecker(scoreObject) {
  let sum = 0 ;
	for(let key in scoreObject){
    sum += scoreObject[key];
	}
  if (sum >= 60){
    console.log("축하합니다! 합격입니다!");
  }else {
    console.log("아쉽지만 불합격입니다..")
  }  
};

passChecker(hyesoonScore);
passChecker(minsoonScore);

😳 실습 문제 출처

0개의 댓글