DAY 10 - javascript

연주·2022년 11월 23일
0

TIL

목록 보기
18/37

22.11.23 수

DAY 10 - javascript (기초다지기)

📌Object.keys, values, entries

  • Object.keys(dbj) : 객체의 키만 담은 배열로 반환
  • Object.values(dbj) : 객체의 값만 담은 배열로 반환
  • Object.entries(dbj) : [키,값] 을 담은 배열로 반환
let user = {
  name: "John",
  age: 30
};

Object.keys(user) = ["name", "age"]
Object.values(user) = ["John", 30]
Object.entries(user) = [ ["name","John"], ["age",30] ]
  • 객체 변환하기
  1. Object.entries(obj)를 사용해 객체의 키-값 쌍이 요소인 배열을 얻는다.
  2. 1.에서 만든 배열에 map 등의 배열 전용 메서드를 적용한다.
  3. 2.에서 반환된 배열에 Object.fromEntries(array)를 적용해 배열을 다시 객체로!
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를 사용하는게 더 익숙했다.

✏️ 프로퍼티 개수 세기

  • 객체 프로퍼티 개수를 반환하는 함수 count(obj)를 만들어보세요.
let user = {
  name: 'John',
  age: 30
};

alert( count(user) ); // 2

가능한 짧게 코드를 작성해 보세요.

주의: 심볼형 프로퍼티는 무시하고 ‘일반’ 프로퍼티 개수만 세주세요.
➡️

function count(obj) {
  return Object.entries(obj).length;
}

// 답에는 keys가 정답으로 나왔는데, entries도 맞는거 아닌가!

💬 오늘의 느낀점
요즘 코딩테스트를 하면서, 위에 내용을 사용했던거 같은데 구글링해서 값을 찾으려고 쓰기에 급급했는데,
뭔가 정확히 이렇게 쓰는거야 라고 한 번 더 짚고 넘어가는 느낌!

profile
성장중인 개발자🫰

0개의 댓글