https://youtu.be/6NZpyA64ZUU
코딩앙마님 강의 보고 정리한 내용입니다^^
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(초기값,병합할 객체)
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.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"}
프로퍼티 값 더하기
급여 정보가 저장되어있는 객체 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));