객체의 메서드

soyeon·2022년 9월 25일
0

TIL

목록 보기
22/32

https://youtu.be/6NZpyA64ZUU
코딩앙마님 강의 보고 정리한 내용입니다^^

키 값에 계산식 넣어도 OK

let a = "age";
const user = {
  name: "Mike",
  [a]: 30,
  [1 + 4]: 5,
  ["굽네" + "치킨"]: "hello"
};
console.log(user); 
//5: 5, name: "Mike", age: 30, 굽네치킨: "hello"}

이를 이용해서 객체를 만드는 함수 만들기

function makeObj(key, val) {
  return {
    [key]: val
  };
}
const obj = makeObj("이름", "국밥");
console.log(obj); //{이름: "국밥"}

Object.assign - 객체 복제하기

Object.assign(초기값,병합할 객체)

  • 초기값에 같은 키 값이 있으면 덮어씌워버림
const user = {
  name: "Mike"
};

const obj = Object.assign({ name: "Tom" }, user);
console.log(obj.name); //Mike
  • 병합할 객체가 여러개일 경우 초기값에 다 병합됩니다.

const user1 = {
  name: "Mike"
};
const info1 = {
  age: 30
};
const info2 = {
  gender: "male"
};

//user에 info1, info2가 병합됨
Object.assign(user1, info1, info2);
console.log(user1);
//{name: "Mike", age: 30, gender: "male"}

💥이런식으로는 객체가 복사되지 않음!

const cloneUser = user;
cloneUser.name = "soondae";
console.log(user.name); //soondae
console.log(user === cloneUser) //true

Object.keys(), Object.values(), Object.entries() - 키/값 관련

  • Object.keys() : 키 값만 배열로 반환
  • Object.values() : 값 배열 반환
  • Object.entries(): 키/값 배열 반환
  • Object.fromEntries() : 키/값 배열 -> 객체

Object.entries(): 키/값 배열 반환

const user2 = {
  name: "soondae",
  age: 26,
  gender: "female"
};
console.log(Object.entries(user2));
/* [
  ["name","soondae"],
  ["age", 26],
  ["gender", "female"]
] */

Object.fromEntries() : 키/값 배열을 객체로 바꿈

const arr = [
  ["name", "soondae"],
  ["age", 26],
  ["gender", "female"]
];
console.log(Object.fromEntries(arr));
//{name: "soondae", age: 26, gender: "female"}

퀴즈 09.27

프로퍼티 값 더하기

급여 정보가 저장되어있는 객체 salaries가 있습니다.
Object.values 와 for..of 반복문을 사용해 모든 급여의 합을 반환하는 함수 sumSalaries(salaries)를 만들어보세요.
salaries가 빈 객체라면, 0이 반환되어야 합니다.

let salaries = {
  John: 100,
  Pete: 300,
  Mary: 250
};

function sumSalaries(obj) {
  let values = Object.values(obj);
  let sum = 0;
  for (const value of values) {
    sum += value;
  }
  return sum;
}

alert(sumSalaries(salaries)); // 650

프로퍼티 개수 세기

객체 프로퍼티 개수를 반환하는 함수 count(obj)를 만들어보세요.

let user = {
  name: "John",
  age: 30
};

function count(obj) {
  return Object.keys(obj).length
}

alert( count(user) ); // 2

최대 급여 계산하기

가장 많은 급여를 받는 사람의 이름을 반환해주는 함수 topSalary(salaries)를 만들어봅시다. 조건은 아래와 같습니다.
salaries가 비어있으면 함수는 null을 반환해야 합니다.
최대 급여를 받는 사람이 여러 명이라면 그 중 아무나 한 명 반환하면 됩니다.
힌트: Object.entries와 구조 분해를 사용해 키-값 쌍을 순회하는 방식을 사용해보세요.

let salaries = {
  John: 100,
  Pete: 300,
  Mary: 250
};
let max = 0;
let maxName;
function topSalary(obj) {
  for (const [name, salary] of Object.entries(obj)) {
    if (max < salary) {
      max = salary;
      maxName = name;
    }
  }
  return maxName;
}

console.log(topSalary(salaries));
profile
공부중

0개의 댓글