WebDevelop 수업 - Day16 JS : Object 예제5

김지원·2022년 7월 1일
0

WebDevelop2

목록 보기
16/34

예제 1) 다음 매개변수 id, name, age, contact 총 네 개를 전달 받아 위 'students' 오브젝트에 추가하는 함수 addStudent를 만드세요.
단, 'students'오브젝트에 학생을 추가 할 때에는 위 매개변수 중 id값을 키(key)로 사용하고 그 값(Value)은 name, age, contact 키 총 세개를 위 매개변수 값과 쌍이되도록 가지는 오브젝트입니다.
또한 위 매개변수 id를 이미 키로 가지고 있다면 그 값을 수정하도록 합니다.
가령, addStudent('A', '김학생', 22, '010-0000-1111');을 호출하면 위 'students'오브젝트의 구조는 아래와 같이 변합니다.

{
	A: {
		name : '김학생',
	    age : 22,
	    contact : '010-0000-1111'
		}
}

위 상태에서 addStudent('A', '이학생', 30, '010-0000-2222');로 호출하게 되면 이미 students 오브젝트에는 'A'를 키로 가지는 쌍이 있음으로 그 값의 내용만 수정하여 아래와 같이 변경되게 합니다.

{
	A: {
		name : '이학생',
	    age : 30,
	    contact : '010-0000-2222'
		}
}

let students = {};
  let addStudent = (id, name, age, contact) => students[id] = {
          'name' : name,
          'age' : age,
          'contact' : contact
  };


예제2) id를 매개변수로 받아 학생의 정보를 출력하는 함수 printStudent를 만드세요
printStudent('A')의 결과는 다음과 같습니다.

let students = {
            A: {
                name : '김학생',
                age : 22,
                contact : '010-0000-1111'
		    }
        };
이름: 김학생
나이: 22
연락처: 010-0000-1111

단, 이때 전달 받은 id와 일치하는 학생이 없다면 '일치하는 학생이 없습니다.'를 출력하세요, 문자열 합치기는 Java와 같이 '+'기호를 사용합니다.

let printStudent = (id) => {
            let keys = Object.keys(students);
            if(keys.indexOf(id) > -1) {
                let student = students[id];
                console.log('이름: ' + student.name);
                console.log('나이: ' + student.age);
                console.log('연락처: ' + student.contact);
            }else {
                console.log('일치하는 학생이 없습니다.')
            }
        };


예제 3) id를 매개변수로 받아 학생의 정보를 삭제하는 함수 deleteStudent를 만드세요. 단, 그러한 학생이 있어 삭제했을 경우 true를, 그런 학생이 없어 삭제하지 못했을 경우 false를 반환하세요.

`deleteStudent를('A'); //true`
`deleteStudent를('adf'); //false`
let deleteStudent = (id) => {
            let keys = Object.keys(students);
            if(keys.indexOf(id) > -1) {
                delete students[id];
                return true;
            } else {
                return false;
            }
        };


예제 4) id를 매개변수로 받아 해당 id를 키로 가지는 학생이 있는가에 대한 여부를 반환하는 함수 studentExists를 만드세요.
`studentExists('A'); //true

let studentExists = (id) => 
Object.keys(students).indexOf(id) > -1;
console.log(studentExists('A'));
console.log(studentExists('adsf'));
console.log(studentExists('B'));


예제5 ) students 오브젝트가 가지고 있는 모든 쌍을 출력하는 함수 printAllStudents 를 만드세요. 가령 현재 상황에서 printAllStudents()를 호출하면 다음과 같이 출력이 되면 됩니다,
기존에 작성되어 있는 코드를 활용하고, 새로 작성하는 코드(printAllStudents 함수) 내에서는 'console'이라는 키워드를 한 번만 사용하세요,
학생간에 '----'로 구분하고 마지막 줄에는 '----'가 출력되지 않습니다.

  • 논리적으로 모든 쌍에 어떻게 접근할 것인가?
    언제 구분선을 출력하고 언제하지 않아야 하는가?
    외부 코드를 활용하며 학생 정보를 어떻게 출력할 것인가?
let printAllStudents = () => {
            let keys =Object.keys(students);          
            for(let i = 0; i < keys.length; i++) {
                let key = keys[i]; // i = 0 이면 key는 'A'
                printStudent(key); // 'A' 혹은 'B'
                if(i < keys.length -1) { 
                    // i : 0 ~ 1 
                    //keys.length -1 : 1
                    console.log('--------------------');
                }
            }
};
  • if(i < keys.length -1) { : 배열에 길이에서 1뺀것은 마지막만 제외한다는 의미 ! 공식처럼 쓰인다 외우기.

profile
Software Developer : -)

0개의 댓글