210815 TIL
코드아카데미 문제 풀이
JAVASCRIPT SYNTAX, PART II - Object
오브젝트에 대한 기초적 개념을 배운 후 활용하는 문제
상황
좋아하는 스포츠 팀의 선수들과 팀이 가졌던 경기 정보를 만들고자 한다.
문제
좋아하는 스포츠 팀의 선수들의 성, 이름, 나이에 관한 정보(5명 이하)를 저장하고 출력하세요.
경기에 대한 정보로 상대팀 나라, 팀 포인트, 상대 팀 포인트에 관한 정보를 저장하고 출력하세요.
스포츠 팀의 선수들 정보와 경기에 대한 정보는 출력마나 가능하고 값을 변경하는 것을 원하지 않습니다.
할 일
- 좋아하는 스포츠 팀에 대한 선수정보와 게임정보 그리고 동적으로 데이터를 추가할 수 있는 동작을 구조화 할 수 있는 team 객체를 생성한다.
- team 객체 안에 선수 정보를 담을 수 있는 _palyers프로퍼티와 게임 정보를 담을 수 있는 _games프로퍼티를 생성한다.
- palyers 프로퍼티에 선수들의 성, 이름, 나이 데이터를 추가한다.
- games 프로퍼티에 상대팀 나라, 팀 점수, 상대팀 점수 데이터를 추가한다.
- team객체 안에 palyers과 games속성을 getter을 통해 출력만 가능하도록 만든다.
- team 객체 내 palyers에 새로운 선수들을 추가할 수 있는 메서드를 만든다.
- team 객체 내 games에 새로운 게임들을 추가할 수 있는 메서드를 만든다.
- 선수들과 게임에 대한 데이터를 추가하고 출력한다.
team 객체에 필요한 속성들
- _players 빈 배열
- _games 빈 배열
- 빈 배열의 _players에 추가할 수 있는 함수
- 빈 배열의 _games에 추가할 수 있는 함수
문제해결
1. team 객체 생성
const team = {}
2. 선수 정보를 담을 수 있는 _palyers프로퍼티와 게임 정보를 담을 수 있는 _games프로퍼티를 생성
_players:[],
_games:[],
3. palyers 프로퍼티에 선수들의 성, 이름, 나이 데이터를 추가
_players:[
{
firstName: '연경',
lastName: '김',
age: 34
},
{
firstName: '희진',
lastName: '김',
age: 31
},
{
firstName: '효진',
lastName: '양',
age: 33
},
],
4. games 프로퍼티에 상대팀 나라, 팀 점수, 상대팀 점수 데이터를 추가
_games:[
{
opponent:'Brazil',
teamPoints: 0,
opponentPoints: 3
},
{
opponent:'Japan',
teamPoints: 3,
opponentPoints: 2
},
{
opponent:'Dominican Republic',
teamPoints: 3,
opponentPoints: 2
},
],
5. palyers과 games속성에 getter 함수를 추가
get players(){
return this._players;
},
get games(){
return this._games;
},
6. palyers에 새로운 선수들을 추가할 수 있는 메서드 만들기
addPlayer(firstName,lastName,age){
let player = {
firstName,
lastName,
age
};
this.players.push(player);
},
왜 firstName: firstName 이 아닐까?
ES6에서는 매개변수 이름과 프로퍼티 키 이름이 동일하면 프로퍼티 키를 생략할 수 있다. 이때 프로퍼티 키는 매개변수 이름으로 자동 생성된다.
7. games에 새로운 게임들을 추가할 수 있는 메서드를 만들기
addGame(opponent,teamPoints,opponentPoints){
let game = {
opponent,
teamPoints,
opponentPoints
};
this._games.push(game);
}
8. 선수들과 게임에 대한 데이터를 추가하고 출력
team.addPlayer('정아','박',29);
team.addPlayer('혜진','안',23);
team.addGame('Serbia',0,3);
team.addGame('Kenya',3,0);
team.addGame('turkey',3,2);
team.addGame('Brazil',0,3);
team.addGame('Serbia',0,3);
console.log(team.players);
console.log(team.games);
/*
[ { firstName: '연경', lastName: '김', age: 34 },
{ firstName: '희진', lastName: '김', age: 31 },
{ firstName: '효진', lastName: '양', age: 33 },
{ firstName: '정아', lastName: '박', age: 29 },
{ firstName: '혜진', lastName: '안', age: 23 } ]
[ { opponent: 'Brazil', teamPoints: 0, opponentPoints: 3 },
{ opponent: 'Japan', teamPoints: 3, opponentPoints: 2 },
{ opponent: 'Dominican Republic', teamPoints: 3, opponentPoints: 2 },
{ opponent: 'Serbia', teamPoints: 0, opponentPoints: 3 },
{ opponent: 'Kenya', teamPoints: 3, opponentPoints: 0 },
{ opponent: 'turkey', teamPoints: 3, opponentPoints: 2 },
{ opponent: 'Brazil', teamPoints: 0, opponentPoints: 3 },
{ opponent: 'Serbia', teamPoints: 0, opponentPoints: 3 } ]
*/
전체 코드
const team ={
_players:[
{
firstName: '연경',
lastName: '김',
age: 34
},
{
firstName: '희진',
lastName: '김',
age: 31
},
{
firstName: '효진',
lastName: '양',
age: 33
},
],
_games:[
{
opponent:'Brazil',
teamPoints: 0,
opponentPoints: 3
},
{
opponent:'Japan',
teamPoints: 3,
opponentPoints: 2
},
{
opponent:'Dominican Republic',
teamPoints: 3,
opponentPoints: 2
},
],
get players(){
return this._players;
},
get games(){
return this._games;
},
addPlayer(firstName,lastName,age){
let player = {
firstName,
lastName,
age
};
this.players.push(player);
},
addGame(opponent,teamPoints,opponentPoints){
let game = {
opponent,
teamPoints,
opponentPoints
};
this._games.push(game);
}
}
team.addPlayer('정아','박',29);
team.addPlayer('혜진','안',23);
team.addGame('Serbia',0,3);
team.addGame('Kenya',3,0);
team.addGame('turkey',3,2);
team.addGame('Brazil',0,3);
team.addGame('Serbia',0,3);
console.log(team.players);
console.log(team.games);
Author And Source
이 문제에 관하여(210815 TIL), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sozero/210815-TIL저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)