let user = {
name: "John",
age: 30
};
Object.keys(user) = ["name", "age"]
Object.values(user) = ["John", 30]
Object.entries(user) = [ ["name","John"], ["age",30] ]
let prices = {
banana: 1,
orange: 2,
meat: 4,
};
프로퍼티의 값을 두 배로 늘려보면??
1. 배열로 만든다.
let doblePrices = Object.entries(prices)
// [ [ 'banana', 1 ], [ 'orange', 2 ], [ 'meat', 4 ] ]
2. map을 사용해 두배로 값을 바꿔준다.
let doublePrice = Object.entries(prices).map(([key, value]) => [
key,
value * 2,
]);
// [ [ 'banana', 2 ], [ 'orange', 4 ], [ 'meat', 8 ] ]
3. 다시 배열에서 객체로
let doublePrice = Object.fromEntries(
Object.entries(prices).map(([key, value]) => [key, value * 2])
);
// { banana: 2, orange: 4, meat: 8 }
// 뭔가 편리, 평소에 코딩테스트 풀면서 필요했을 거 같은데 잘 기억해보자!
// 신기하다!!!
✏️ 프로퍼티 값 더하기
급여 정보가 저장되어있는 객체 salaries가 있습니다.
Object.values 와 for..of 반복문을 사용해 모든 급여의 합을 반환하는 함수 sumSalaries(salaries)를 만들어보세요.
= salaries가 빈 객체라면, 0이 반환되어야 합니다.
예시:
let salaries = {
"John": 100,
"Pete": 300,
"Mary": 250
};
alert( sumSalaries(salaries) ); // 650
➡️
let salaries = {
John: 100,
Pete: 300,
Mary: 250,
};
function sumSalaries(obj) {
let sum = 0;
for (let value of Object.values(obj)) {
sum += value;
}
return sum;
}
sumSalaries(salaries);
// 거의 다왔는데, sum에 더한 값을 입력받는 부분에서 조금 어려움을 겪음
// 엄청 유용하다
tip!
Object.values 와 reduce를 이용해 합을 구할 수도 있습니다.
라고 해답지에 써있었다.
나는 reduce를 사용하는게 더 익숙했다.
✏️ 프로퍼티 개수 세기
let user = {
name: 'John',
age: 30
};
alert( count(user) ); // 2
가능한 짧게 코드를 작성해 보세요.
주의: 심볼형 프로퍼티는 무시하고 ‘일반’ 프로퍼티 개수만 세주세요.
➡️
function count(obj) {
return Object.entries(obj).length;
}
// 답에는 keys가 정답으로 나왔는데, entries도 맞는거 아닌가!
💬 오늘의 느낀점
요즘 코딩테스트를 하면서, 위에 내용을 사용했던거 같은데 구글링해서 값을 찾으려고 쓰기에 급급했는데,
뭔가 정확히 이렇게 쓰는거야 라고 한 번 더 짚고 넘어가는 느낌!