[키, 값]
쌍을 담은 배열을 반환합니다.map
, filter
같은 배열 전용 메서드를 사용할 수 없음Object.entries(obj)
를 사용해 객체의 키-값 쌍이 요소인 배열을 얻습니다.map
등의 배열 전용 메서드를 적용합니다.Object.fromEntries(array)
를 적용해 배열을 다시 객체로 되돌립니다.let user = {
name: "Violet",
age: 30
};
// 값을 순회합니다.
for (let value of Object.values(user)) {
console.log(value); // Violet과 30이 연속적으로 출력됨
}
→ 1번
/* 프로퍼티 값 더하기
급여 정보가 저장되어있는 객체 salaries가 있습니다.
Object.values 와 for..of 반복문을 사용해 모든 급여의 합을 반환하는 함수 sumSalaries(salaries)를 만들어보세요.
salaries가 빈 객체라면, 0이 반환되어야 합니다.
=======================================================
예시:
let salaries = {
"John": 100,
"Pete": 300,
"Mary": 250
};
console.log( sumSalaries(salaries) ); // 650
*/
//=======================================================
// 내가 작성한 코드(정답)
function sumSalaries(salaries){
let sumVal = 0;
for (let value of Object.values(salaries)){
sumVal += value;
}
return sumVal
}
let salaries = {
"John": 100,
"Pete": 300,
"Mary": 250
};
console.log( sumSalaries(salaries) ); // 650
//=======================================================
// 해답 코드
// reduce는 급여 정보가 저장되어있는 배열을 순회해
// 급여의 총합을 만들고
// 그 결과를 반환합니다.
function sumSalaries2(salaries) {
return Object.values(salaries).reduce((a, b) => a + b, 0) // 650
}
console.log( sumSalaries2(salaries) ); // 650
→ 2번
/* 프로퍼티 개수 세기
객체 프로퍼티 개수를 반환하는 함수 count(obj)를 만들어보세요.
let user = {
name: 'John',
age: 30
};
alert( count(user) ); // 2
가능한 짧게 코드를 작성해 보세요.
주의: 심볼형 프로퍼티는 무시하고 ‘일반’ 프로퍼티 개수만 세주세요.
*/
// 내 풀이(=해답)
function count(user){
return Object.keys(user).length;
}
let user = {
name: 'John',
age: 30
};
console.log(count(user));
객체에 사용하는 것과 배열에 사용하는 것이 매우 비슷하다고 느껴졌다. 크게 어렵지는 않았다.
결국, 키를 메인으로 할 것인가 / 값을 메인으로 할 것인가 / 키와 값 모두를 메인으로 갈 것이냐의 관점에 따라 다르게 구성될 뿐이라고 생각한다.