파트 1 - 4) 자료구조와 자료형 - 9) Object.keys, values, entries

Lee·2021년 11월 28일
0

https://ko.javascript.info/keys-values-entries

keys(), values(), entries()는 Map, Set, Array 자료구조에서 사용할 수 있다.

일반 객체에서는 아래와 같은 메서드를 사용할 수 있다.
Object.keys(obj) – 객체의 키만 담은 배열을 반환
Object.values(obj) – 객체의 값만 담은 배열을 반환
Object.entries(obj) – [키, 값] 쌍을 담은 배열을 반환

map.keys() => iterable 객체를 반환
object.keys(obj) => 진짜 배열을 반환
(obj.keys() 아님!)

위처럼 반환 형태가 다른 이유는 하위 호환성 때문.

위 세 메서드는 심볼형 키는 무시하는데 심볼형 키가 필요한 경우엔 심볼형 키만 배열 형태로 반환해주는 메서드인 Object.getOwnPropertySymbols를 사용하면 된다. getOwnPropertySymbols 이외에도 키 전체를 배열 형태로 반환하는 메서드인 Reflect.ownKeys(obj)를 사용해도 괜찮다.

map과 filter는 배열 전용 메서드로 객체에는 사용이 불가능한데 Object.entries와 Object.fromEntries를 순차적으로 적용하면 객체에도 배열 전용 메서드 사용할 수 있다.

  1. Object.entries(obj)를 사용해 객체의 키-값 쌍이 요소인 배열을 얻는다.
  2. 1 에서 만든 배열에 map 등의 배열 전용 메서드를 적용
  3. 2 에서 반환된 배열에 Object.fromEntries(array)를 적용해 배열을 다시 객체로 되돌린다.
let prices = {
  banana: 1,
  orange: 2,
  meat: 4,
};

let doublePrices = Object.fromEntries(
  // 객체를 배열로 변환해서 배열 전용 메서드인 map을 적용하고
  // fromEntries 메서드를 사용해 배열을 다시 객체로 되돌린다
  Object.entries(prices).map(([key, value]) => [key, value * 2])
);

alert(doublePrices.meat); // 8
profile
하고 싶은 게 너무 많습니다.

0개의 댓글

관련 채용 정보