
forEach()는 배열의 각 요소에 대해 제공된 함수를 한 번씩 실행하는 메서드for)의 현대적이고 읽기 쉬운 대안으로 많이 쓰임기본 문법
배열.forEach((요소, 인덱스, 배열자체) => {
// 실행할 코드
});
// 요소 (Element) : 현재 처리 중인 배열의 항목
// 인덱스 (Index) : (선택) 현재 항목의 번호 (0부터 시작)
// 배열자체 (Array) : (선택) forEach()를 호출한 배열 그 자체
실습
const arr = [1, 2, 3, 4, 5];
arr.forEach(function (a, b, c) {
console.log(`a : ${a}, b : ${b} c : ${c}`);
});
실행 결과

Map 객체의 forEach는 배열의 forEach와 유사하지만, 키-값 쌍(Key-Value Pair)을 다룬다는 점에서 차이가 있음
Map 객체는 요소의 삽입 순서를 기억하며, forEach 메서드는 이 순서대로 각 요소를 순회
콜백 함수의 3가지 인자 (중요!)
자바스크립트 엔진은 forEach를 실행할 때 다음 세 가지 인자를 순서대로 전달
1. Value (값): 현재 요소의 실제 데이터
2. Key (키): 해당 값에 연결된 이름표(키)
3. Map (전체): 현재 순회 중인 Map 객체 자체
실습
// 1. Map 객체 생성 및 데이터 삽입
let map = new Map();
map.set(1, "one"); // Key: 1, Value: "one"
map.set(3, "three"); // Key: 3, Value: "three"
map.set(2, "two"); // Key: 2, Value: "two"
// 2. forEach를 이용한 순회
map.forEach(function (value, key, source) {
console.log(`값 : ${value}, 키 : ${key}, 전체 객체 : ${source}`);
});

forEach
undefinedmap
실습
const arr = [1, 2, 3, 4, 5];
console.log(`arr = [${arr}]`);
const foreachArr = arr.forEach(function (a, b, c) {
return a * 2;
});
const mapArr = arr.map(function (a, b, c) {
return a * 2;
});
console.log(`foreach로 return하면 ${foreachArr},
map으로 return하면 ${mapArr}`);

HTTP 상태 코드는 세 자리 숫자로 이루어져 있으며, 첫 번째 숫자가 응답의 카테고리를 결정
POST 요청 결과)
app.put("/youtubers/:id", (req, res) => {
const targetId = parseInt(req.params.id);
const youtuber = db.get(targetId);
if (youtuber) {
const oldTitle = youtuber.channelTitle;
const newTitle = req.body.channelTitle;
db.set(targetId, req.body);
res.json({
message: `${oldTitle}님의 정보가 ${newTitle}로 수정되었습니다.`,
});
} else {
res.status(404).json({ message: "수정할 유튜버가 없습니다." });
}
});


app.delete("/youtubers/:id", (req, res) => {
const targetId = parseInt(req.params.id);
const youtuber = db.get(targetId);
if (youtuber) {
db.delete(targetId);
res.json({ message: `${youtuber.channelTitle}님이 삭제되었습니다.` });
} else {
res.status(404).json({ message: "삭제할 유튜버가 없습니다." });
}
});


app.delete("/youtubers", (req, res) => {
if (db.size > 0) {
db.clear();
res.json({
message: "전체 유튜버 정보가 성공적으로 삭제되었습니다.",
});
} else {
res.status(404).json({
message: "삭제할 유튜버 정보가 이미 없습니다.",
});
}
});

forEach, map)forEach(): 단순 반복용 메서드. return 값이 없으므로 변수에 할당하면 항상 undefined가 담김map(): 데이터 변형용 메서드. 콜백 함수가 반환(return)하는 값들을 모아 새로운 배열을 생성Map 객체의 forEach: 인자 순서가 (값, 키, 전체 객체) 순서입니다. 배열과 달리 Value(값)가 첫 번째 인자로 오는 점에 주의해야 함서버가 응답할 때 상태 코드를 통해 처리 결과를 명확히 전달
POST).db.set(id, data)를 사용. Map의 set은 동일한 키가 있으면 기존 데이터를 덮어쓰는 성질을 이용db.delete(id): 특정 ID를 가진 데이터만 삭제db.clear(): Map 안의 모든 데이터를 한 번에 삭제(전체 삭제)