210815 TIL



コード学院の解答


JAVASCRIPT SYNTAX, PART II - Object


オブジェクトの基本概念を学習して使用する問題

ケース


好きなチーム選手とチームが持っている試合情報を作りたい.

質問する


好きなスポーツチームの選手の性別、名前、年齢情報(5名以下)を保存して印刷します.
試合の情報で相手国、チームポイント、相手チームポイントに関する情報を格納し、出力する.
スポーツチームの選手情報と試合情報は出力できますが、値を変更したくないです.

やるべきこと

  • は、好きなスポーツチームの選手情報、ゲーム情報、およびデータを動的に追加できる動作に関する構造化されたチームオブジェクトを生成する.
  • チームオブジェクト内には、選手情報を含むことができるpayers propertyと、ゲーム情報を含むことができるgames propertyが生成される.
  • 選手の名前と年齢データをプロリーグに追加します.
  • 試合で相手チームの国、チームの点数、相手チームの点数データを追加.
  • teamオブジェクト内でpayersおよびgamesプロパティをgetterのみで出力できるように設定します.
  • チーム対象内のプレイヤーに新選手を追加できる方法を作成します.
  • チームオブジェクト内のゲームに新しいゲームを追加できる方法を作成します.
  • 選手とゲームに関するデータを追加し、出力します.
  • チームオブジェクトに必要なプロパティ.
  • プレイヤー空席配列
  • ゲーム空席配列
  • 空配列のプレイヤーが追加できる関数
  • 空の配列のgamesに追加できる関数
  • トラブルシューティング


    1.チームオブジェクトの作成

    const team = {}

    2.選手情報を含むpayers propertyとゲーム情報を含むgames propertyを生成する

    _players:[],
    _games:[],

    3.paylers propertyに選手の名前年齢データを追加する

      _players:[
        {
          firstName: '연경',
          lastName: '김',
          age: 34
        },
        {
          firstName: '희진',
          lastName: '김',
          age: 31
        },
        {
          firstName: '효진',
          lastName: '양',
          age: 33
        },
      ],

    4.ゲーム番組に相手チームの国家、チーム点数、相手チーム点数データを追加

      _games:[
        {
          opponent:'Brazil',
          teamPoints: 0,
          opponentPoints: 3
        },
        {
          opponent:'Japan',
          teamPoints: 3,
          opponentPoints: 2
        },
        {
          opponent:'Dominican Republic',
          teamPoints: 3,
          opponentPoints: 2
        },
      ],

    5.paylersと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じゃないの?
    ES 6では、パラメータ名とpropertyキー名が同じであれば、propertyキーを省略することができる.この場合、propertyキーは自動的にパラメータ名として生成されます.

    7.ゲームに新しいゲームを追加する方法を作成する

    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);