[JS100제] 문제27 : 객체 만들기 ✏️

youngseo·2022년 2월 17일
0

JS100제

목록 보기
14/25
post-thumbnail

문제27 : 객체 만들기

첫번째 입력에서는 학생의 이름이 공백으로 구분되어 입력되고, 두번째에는 그 학생의 수학 점수가 공백으로 구분되어 주어집니다.

두 개를 합쳐 학생의 이름이 key이고 value가 수학 점수인 객체를 출력해주세요.

입력
Yujin Hyewon
70 100

출력
{'Yujin': 70, 'Hyewon': 100}

Wrong answer

function Object(name, score) {
  this.name = name;
  this.score = score;
}

function soulution(names, scores) {
  let name = names.split(' ');
  let score = scores.split(' ');

  for (let i = 0; i < name.length; i++){
    let obj = new Object(name[i],score[i])
  }
}

정답

const keys = prompt('이름을 입력하세요').split(' ');
const values = prompt('점수를 입력하세요').split(' ');
const obj = {};

for (let i=0; i<keys.length; i++) {
  obj[keys[i]] = parseInt(values[i], 10);
}

console.log(obj);

정답 확인 후 재풀이

function Object(name, score) {
  this.name = name;
  this.score = score;
 }

function soulution(names, scores) {
  let name = names.split(' ');
  let score = scores.split(' ');
  let obj= new Object(name, score)

  for (let i = 0; i < name.length; i++){
    obj.name[i]
    obj.score[i]
  }

  return obj
}

console.log(soulution('Yujin Hyewon', '70 100'))

알아보기

Object

1. 객체 생성

객체를 만드는 방법에는 여러가지 있습니다.

1-1 싱글 리터럴방식

:을 기준으로 왼쪽은 key 또는 property 오른쪽은 value로 구성합니다. property 값으로 함수가 올 수도 있는데 이러한 property메소드(method)라고 합니다.

const object = {
  property: 'value'
  method: function(){}
}

1-2 생성자함수

만약, 싱글 리터럴 방식을 많이 만들어야 하는 경우 생성자함수를 이용할 수 있습니다.생성자 함수의 이름으로는 PascalCase로 만듭니다. 이 PascalCase로 만든 함수의 경우 암묵적으로 생성자함수를 뜻합니다.

new키워드와 함께 생성자 함수를 사용해 간단하게 새로운 객체를 만들어낼 수 있습니다.

function NewObject(name) {
  this.name = name;
}

const newObject = new NewObject('jang');

1-3 Object.create

객체를 서술하는 역할을 자세하게 설정을 해 Object를 만들 수 있습니다.Object.createObject메소드로 인수로 (프로토타입, 객체서술자(기술자))를 받습니다.

const newObject2 = Object.create(Object.prototype, {
  name: {
  	value: 'jang',
    writable: true, // 덮어쓸 수 있는지
    enumerable: true, // 열거할 수 있는지
    configurable: true, // 객체 서술자를 수정할 수 있는지
  },
});

출처


코드페스티벌

0개의 댓글