하위 태스크 1
Truthy/Falsy 값 실습
다양한 값의 Truthy/Falsy 여부를 테스트
advanced.js 파일을 생성한다.
New-Item -Path .\advanced.js -ItemType Fileadvanced.js:
console.log(Boolean(0)); // false
console.log(Boolean("")); // false
console.log(Boolean("hello")); // true
console.log(Boolean(null)); // false
console.log(Boolean(undefined)); // false
console.log(Boolean([])); // true
console.log(Boolean({})); // true하위 태스크 2
단락 평가 기본 값 처리
advanced.js:
// ... 하위 태스크 1
const user = {
name: "홍길동",
nickname: null,
age: 25,
email: "[email protected]",
job: "programmer",
};
console.log(user.nickname || "손님"); // 손님
console.log(user.nickname ?? "손님"); // 손님하위 태스크 3
&& 조건부 실행 패턴
단락 평가로 안전한 접근 구현
advanced.js:
// ... 하위 태스크 2
user && user.name && console.log(user.name); // 홍길동하위 태스크 4
객체 구조 분해 할당
사용자 객체에서 필요한 필드만 추출
advanced.js:
// ... 하위 태스크 3
const { name, age, email } = user;
console.log(`${name}의 나이는 ${age}입니다. ${email}로 연락해 주세요.`);
// 홍길동의 나이는 25입니다. [email protected]로 연락해 주세요. 하위 태스크 5
배열 구조 분해 + Rest
배열 앞부분과 나머지를 나누어 받는 코드 작성
advanced.js:
// ... 하위 태스크 4
const foods = ["🍕", "🥗", "🥞", "🥐", "🍟", "🌮"];
const [pizza, salad, ...others] = foods;
console.log(pizza, salad);//🍕 🥗하위 태스크 6
스프레드로 복사/추가
배열/객체 복사 및 요소 추가 코드 작성
advanced.js:
// ... 하위 태스크 5
const copiedFoods = [...foods];
copiedFoods.push("🍘");
console.log(copiedFoods); // ["🍕","🥗","🥞","🥐","🍟","🌮","🍘"] 하위 태스크 7
Rest 매개변수 활용
가변 인자를 받는 함수 구현
advanced.js:
// ... 하위 태스크 6
function say(...words) {
console.log(words.join(" ")); // 나는 JavaScript를 배우고 있어요.
}
say("나는", "JavaScript를", "배우고", "있어요.");하위 태스크 8
users 배열 정의
회원 정보를 담은 객체 배열 생성
advanced.js:
// ... 하위 태스크 7
const users = [
{ id: 0, name: "홍길동", age: 25, isActive: true },
{ id: 1, name: "김철수", age: 15, isActive: false },
{ id: 2, name: "윤아름", age: 24, isActive: true },
{ id: 3, name: "황정현", age: 32, isActive: true },
{ id: 4, name: "강성호", age: 41, isActive: false },
];하위 태스크 9
filter로 활성 사용자 필터링
isActive 가 true인 사용자만 남기기
advanced.js:
console.log(users.filter((u) => u.isActive));
// [
// {
// "id": 0,
// "name": "홍길동",
// "age": 25,
// "isActive": true
// },
// {
// "id": 2,
// "name": "윤아름",
// "age": 24,
// "isActive": true
// },
// {
// "id": 3,
// "name": "황정현",
// "age": 32,
// "isActive": true
// }
// ] 하위 태스크 10
map으로 이름 목록 추출
사용자 이름 배열 생성
advanced.js:
// ... 하위 태스크 10
console.log(users.map((u) => u.name));
// [
// "홍길동",
// "김철수",
// "윤아름",
// "황정현",
// "강성호"
// ]하위 태스크 11
sort로 나이순 정렬
나이 기준 오름차순 정렬 구현
advanced.js:
console.log(users.sort((a, b) => a.age - b.age));
// [
// {
// "id": 1,
// "name": "김철수",
// "age": 15,
// "isActive": false
// },
// {
// "id": 2,
// "name": "윤아름",
// "age": 24,
// "isActive": true
// },
// {
// "id": 0,
// "name": "홍길동",
// "age": 25,
// "isActive": true
// },
// {
// "id": 3,
// "name": "황정현",
// "age": 32,
// "isActive": true
// },
// {
// "id": 4,
// "name": "강성호",
// "age": 41,
// "isActive": false
// }
// ]하위 태스크 12
find로 특정 사용자 찾기
ID로 사용자 검색
advanced.js:
console.log(users.find((u) => u.id === 0));
// {
// "id": 0,
// "name": "홍길동",
// "age": 25,
// "isActive": true
// }하위 태스크 13
join으로 문자열 생성
이름 목록을 쉼표로 구분한 문자열 만들기
advanced.js:
console.log(users.map((u) => u.name).join(", ").trim());
// 김철수, 윤아름, 홍길동, 황정현, 강성호