Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 파이썬 replace
- 내일배움캠프 프로젝트
- 한글 공부 사이트
- 파이썬 반복문
- 내일배움캠프 최종 프로젝트
- 타입스크립트 props
- 코딩테스트
- 파이썬 enumerate
- useEffect
- React Hooks
- 파이썬 slice
- 파이썬 for
- 내일배움캠프
- 타입스크립트
- 리액트 훅
- JavaScript
- 자바스크립트
- 내배캠 프로젝트
- 리액트 공식문서
- 리액트 프로젝트
- 프로그래머스
- 파이썬 for in
- 파이썬 딕셔너리
- 타입스크립트 리액트
- 리액트
- REACT
- useState
- tanstack query
- Next 팀 프로젝트
- typeScript
Archives
- Today
- Total
sohyeon kim
[JS] for in 문 & for of 문, 반복문 본문
728x90
💡 for in : 객체 안에 프로퍼티들을 가지고 하나씩 반복적인 동작을 수행할 때 사용
❌ 배열에선 사용 ❌
for(변수 in 객체) {
동작부분;
}
let aoto = {
name: "yae",
age: 20,
isVeryNice: true,
};
for (let item in aoto) { // item : 프로퍼티 네임, aoto :실행할 객체
console.log(item); // 프로퍼티 네임을 가져옴
console.log(aoto[item]); // 프로퍼티 값을 가져옴
}
// name
// yae
// age
// 20
// isVeryNice
// true
❗️ 주의) 객체는 정수형 프로퍼티 네임을 오름차순으로 먼저 정렬하고,
나머지 프로퍼티들은 추가한 순서대로 정렬한다!
let myObject = {
'2': '알고리즘의 정석',
'3': '컴퓨터 개론',
'1': '자바스크립트 프로그래밍 기초',
};
for (let key in myObject) {
console.log(myObject[key]);
}
// 자바스크립트 프로그래밍 기초
// 알고리즘의 정석
// 컴퓨터 개론
➕ 정수형 프로퍼티 네임
따옴표로 감싸거나 감싸지 않아도 자동 정렬이 되고, 콘솔로만 찍어도 정렬이 되어 있다.
일반적으로 잘 사용하지 않는다.
let myObject = {
3: '정수3',
name: 'aoto',
1: '정수1',
birthDay: '2018.8.28',
2: '정수2',
};
for (let key in myObject) {
console.log(key);
}
// 1
// 2
// 3
// name
// birthDay
console.log(myObject)
// {1: "정수1", 2: "정수2", 3: "정수3", name: "aoto", birthDay: "2018.8.28"}
➕ 숫자형(양수) 프로퍼티 네임
이런 숫자(양수)로도 key 설정 가능!
하지만 문자열로 형 변환이 되고, 대괄호 표기법으로만 접근 가능
let myObject = {
800: '정수',
1.5: '소수',
};
for (let key in myObject) {
console.log(`${key}의 자료형은 ${typeof key}입니다.`);
}
// 800의 자료형은 string입니다.
// 1.5의 자료형은 string입니다.
console.log(myObject['800']);
console.log(myObject['1.5']);
console.log(myObject.800); // Error!
console.log(myObject.1.5); // Error!
➕ 활용 ~
aoto와 yae의 총 점수가 60점이 넘으면 합격, 넘지 않으면 불합격 반환!
let aotoScore = {
'국어': 60,
'수학': 80,
};
let yaeScore = {
'국어': 40,
'수학': 10,
};
function passChecker(scoreObject) {
let score = 0;
for(let key in scoreObject){
score += scoreObject[key]
}
if(score >= 60) {
console.log("축하합니다! 합격입니다!")
} else {
console.log("아쉽지만 불합격입니다..")
}
}
passChecker(aotoScore);
passChecker(yaeScore);
// 축하합니다! 합격입니다!
// 아쉽지만 불합격입니다..
💡 for of : 배열 안에 요소들을 가지고 하나씩 반복적인 동작을 수행할 때 사용
⭕️ 배열에서 사용 ⭕️
for(변수 in 객체) {
동작부분;
}
let name = ["aoto", "yae"]
for(let element of name) { // element : 배열의 요소, name : 배열
console.log(element)
}
// "aoto"
// "yae"
➕ 활용 ~
투표 결과 리스트인 배열 votes 를 토대로, 객체 voteCounter 에 후보별 득표수를 정리해보자!
voteCounter 가 처음엔 빈 객체이기 때문에 두 가지 경우를 고려해야 한다.
1. voteCounter[name] 프로퍼티가 없는 경우
2. voteCounter[name] 프로퍼티가 있는 경우
없다면 새 프로퍼티를 만들고, 있다면 1씩 증가시켜준다.
let votes = [
'이재식', '이재식', '이규하', '이규하', '이규하',
'이재식', '이재식', '이규하', '이규하', '이재식',
'이규하', '이규하', '이규하', '이규하', '이재식',
'이재식', '이규하', '이재식', '이재식', '이재식',
'이재식', '이재식', '이규하', '이규하', '이규하',
'이규하', '이규하', '이재식', '이규하', '이규하',
'이규하', '이규하', '이재식', '이규하', '이규하',
'이규하', '이재식', '이재식', '이재식', '이규하',
];
let voteCounter = {};
for (let name of votes) {
if (name in voteCounter) {
voteCounter[name]+= 1; // 프로퍼티가 있는 경우
} else {
voteCounter[name] = 1; // 프로퍼티가 없는 경우
}
}
console.log(voteCounter); // { '이재식': 17, '이규하': 23 }
728x90
반응형
'JavaScript' 카테고리의 다른 글
[JS] Arrow Function 화살표 함수, 함수 표현식, this 우회 (0) | 2024.01.02 |
---|---|
[JS] 기본형과 참조형 (1) | 2024.01.02 |
[JS] Date() 데이트 객체, 날짜 가져오기 (0) | 2024.01.02 |
[JS] Object Property 객체 프로퍼티 수정, 추가, 삭제, 유무 확인 (0) | 2023.12.29 |
[JS] 객체 데이터 접근, 객체 메소드, 비교, 병합 (0) | 2023.12.29 |