CH04 반복문
학습목표
- 배열
- 파괴적 처리와 비파괴적 처리
- for in 반복문, for of 반복문, for 반복문, while 반복문
4-1 배열
배열은 여러 자료를 묶어서 활용할 수 있는 특수한 자료 구조입니다.
문자열 예시
const str = '안녕하세요';
console.log(str[2]); // 하
console.log(str[str.length - 1]); // 요
배열 만들기
- 대괄호 [..]를 사용해 생성하고, 내부의 값을 쉼표 ,로 구분합니다.
- 배열 내부에 들어 있는 값을 "요소"라고 합니다.
배열 요소에 접근
- 접근 방법: 배열[인덱스]
- 인덱스(Index)는 요소의 순서를 나타내며, 0부터 시작합니다.
배열 요소 개수 확인
- 배열의 요소 개수를 확인하려면 .length 속성을 사용합니다.
예시
const fruits = ['배', '사과', '키위', '바나나'];
console.log(fruits.length); // 4
console.log(fruits[fruits.length - 1]); // 바나나 (배열의 마지막 요소)
배열 뒷부분에 요소 추가하기
-push() 메서드 사용
const fruits = ['배', '사과']; fruits.push('키위'); console.log(fruits); // ['배', '사과', '키위']
-인덱스를 사용하여 추가 배열의 길이를 이용해 마지막 위치에 요소를 추가할 수 있습니다.
const fruits = ['배', '사과']; fruits[fruits.length] = '바나나'; console.log(fruits); // ['배', '사과', '바나나']
배열 요소 제거하기
- 인덱스를 기반으로 제거
- splice(인덱스, 제거할 요소 개수) 메서드를 사용합니다.
const fruits = ['배', '사과', '키위']; fruits.splice(1, 1); // 1번 인덱스 요소 제거 console.log(fruits); // ['배', '키위']
- 값으로 요소 제거
- indexOf()로 값의 위치를 찾은 뒤, splice()로 제거합니다.
const fruits = ['배', '사과', '키위']; const index = fruits.indexOf('사과'); if (index !== -1) { fruits.splice(index, 1); } console.log(fruits); // ['배', '키위']
- 특정 값을 가진 요소 모두 제거하기
- 반복문이나 filter() 메서드를 사용합니다.
const items = ['사과', '배', '귤', '귤']; const filteredItems = items.filter(item => item !== '귤'); console.log(filteredItems); // ['사과', '배']
배열의 특정 위치에 요소 추가하기
- splice(인덱스, 0, 요소)를 사용하면 요소를 추가할 수 있습니다.
const fruits = ['배', '바나나'];
fruits.splice(1, 0, '사과'); // 1번 인덱스에 '사과' 추가
console.log(fruits); // ['배', '사과', '바나나']
4-2 반복문
for in 반복문
- 배열이나 객체의 속성을 하나씩 반복할 때 사용합니다.
- 반복 변수에는 배열의 인덱스가 들어갑니다.
const fruits = ['배', '사과', '바나나'];
for (const index in fruits) {
console.log(index, fruits[index]);
}
for of 반복문
- 배열이나 반복 가능한 객체의 값을 하나씩 반복합니다.
const fruits = ['배', '사과', '바나나'];
for (const fruit of fruits) {
console.log(fruit);
}
for 반복문
- 특정 횟수만큼 반복할 때 사용하는 일반적인 반복문입니다.
for (let i = 0; i < 5; i++) {
console.log(i);
}
while 반복문
- 조건식이 참인 동안 반복 실행됩니다.
let i = 0;
while (i < 5) {
console.log(i);
i++;
}
break 키워드
- 반복문을 즉시 종료합니다.
for (let i = 0; i < 5; i++) {
if (i === 3) break;
console.log(i);
}
continue 키워드
- 현재 반복을 건너뛰고, 다음 반복을 진행합니다.
for (let i = 0; i < 5; i++) {
if (i === 3) continue;
console.log(i);
}
기본 숙제
비파괴적 처리와 파괴적 처리의 의미와 장단점 설명
비파괴적 처리
- 의미: 원본 데이터를 변경하지 않고 새로운 데이터를 생성하여 작업을 수행합니다.
- 예시:
const array = [1, 2, 3]; const newArray = array.map(num => num * 2); // [2, 4, 6] console.log(array); // [1, 2, 3]
- 원본 데이터가 유지되어 데이터 무결성을 보장합니다.
- 새로운 데이터를 생성하므로 메모리를 더 많이 사용할 수 있습니다.
파괴적 처리
- 의미: 원본 데이터를 직접 변경하여 작업을 수행합니다.
- 예시:
const array = [1, 2, 3]; array.push(4); // [1, 2, 3, 4] console.log(array); // [1, 2, 3, 4]
- 메모리를 절약할 수 있습니다.
- 원본 데이터가 변경되어 예기치 않은 버그가 발생할 수 있습니다.
추가 숙제
p.173 확인문제 3번 풀기 및 풀이 과정 설명
- 비파괴적 처리: strA가 보존됩니다.
- 파괴적 처리: arrayB가 변경됩니다.
- 비파괴적 처리: arrayC가 보존됩니다.
- 비파괴적 처리: strD가 보존됩니다.