레슨 3 / 9·20분
배열과 반복문
배열 기초와 반복
배열은 순서가 있는 데이터 목록입니다. for...of는 배열의 각 요소를 순회하며, forEach는 배열 메서드로 각 요소에 콜백을 실행합니다.
javascript
const fruits = ["사과", "바나나", "포도"];
// for...of — 값을 직접 순회
for (const fruit of fruits) {
console.log(fruit);
}
// forEach — 인덱스도 함께 사용
fruits.forEach((fruit, index) => {
console.log(index + ": " + fruit);
});
// 0: 사과
// 1: 바나나
// 2: 포도map, filter, reduce
배열의 고차 함수는 데이터를 변환하거나 추출할 때 핵심적으로 사용됩니다. map은 각 요소를 변환해 새 배열을 만들고, filter는 조건에 맞는 요소만 추출하며, reduce는 배열을 하나의 값으로 축약합니다.
javascript
const numbers = [1, 2, 3, 4, 5];
// map: 각 요소를 변환
const doubled = numbers.map(n => n * 2);
console.log(doubled); // [2, 4, 6, 8, 10]
// filter: 조건에 맞는 요소만
const evens = numbers.filter(n => n % 2 === 0);
console.log(evens); // [2, 4]
// reduce: 하나의 값으로 축약
const sum = numbers.reduce((acc, n) => acc + n, 0);
console.log(sum); // 15- •
map(fn)— 원본과 같은 길이의 새 배열 반환 - •
filter(fn)— 조건이 true인 요소만 모은 새 배열 반환 - •
reduce(fn, init)— 누적값을 계산하여 단일 값 반환 - •
find(fn)— 조건에 맞는 첫 번째 요소 반환 - •
some(fn)/every(fn)— 하나라도 / 모두 조건 충족 여부
javascript
// 실전 예제: 학생 성적 처리
const students = [
{ name: "김철수", score: 85 },
{ name: "이영희", score: 92 },
{ name: "박민수", score: 78 },
{ name: "정수아", score: 95 },
];
// 90점 이상 학생 이름 목록
const topStudents = students
.filter(s => s.score >= 90)
.map(s => s.name);
console.log(topStudents); // ["이영희", "정수아"]
// 평균 점수
const avg = students.reduce((sum, s) => sum + s.score, 0) / students.length;
console.log(avg); // 87.5💡
map, filter, reduce는 원본 배열을 변경하지 않고 새 배열 또는 값을 반환합니다. 이를 "불변성(immutability)"이라 하며, 버그를 줄이는 데 크게 도움이 됩니다.