37. Object.keys, values, entries

Chipmunk_jeong·2021년 3월 24일
0

TIL

목록 보기
37/62
post-thumbnail

순회에 필요한 메서드 map.keys(), map.values(), map.entries()를 알아보았다.

이 메서드들은 포괄적인 용도로 만들어졌고, 이것들을 사용할수 있는 3개의 자료구조가 있다.

  • Map
  • Set
  • Array

앞서 배웠던 map, set에 사용되었던 메서드들이다.
하지만, 일반 객체에도 순회 관련 메서드가 있긴하다.
문법이 조금 다르지만 같은 이름을 가진 메서드가 구현되어있다.


Object.keys - 키만을 가진 배열 리턴

Object.values - 값만 담은 배열 리턴

Object.entries - 키와 값을 쌍인 배열 리턴

우선 Map, Set, Array에 사용되는 메서드와 차이점은 아래와 같다.

  • 객체는 Object.keys(대상)
    나머지는 대상.keys
  • 객체는 배열을 반환
    나머지는 iterable 객체를 반환
let user = {
  name: 'quakka',
  age: 29,
};

Object.keys(user); // ['name', 'age']
Object.values(user); // ['quakka', 29]
Object.entries(user); // [ ['name', 'quakka'], ['age', 29] ]

* 심볼형 프로퍼티는 무시된다
위의 메서드들은 심볼형인 프로퍼티는 무시가 된다.
하지만 심볼형을 읽어올 수 있는 두가지 메서드가 존재한다.
1. Object.getOwnPropertySymbols -> 심볼형 키만을 리턴
2. Object.ownKeys(obj) -> 심볼형을 포함한 전체 키를 리턴


객체 변환

객체에는 map, filter, reduce등의 고차함수를 사용하는 메서드가 있다.
하지만 Object.entriesObject.fromEntries를 순차적으로 적용한다면 객체에도 배열 전용 메서드를 사용할 수 있다.

  1. Object.entries(obj)를 사용해 객체의 키값을 쌍으로 하는 요소를 가진 배열은 얻는다.
  2. 만들어진 배열에 map, filter등의 메서드를 적용한다.
  3. 위의 메서드를 통해 만들어진 새로운 배열에 Object.fromEntries(array)를 적용해 다시 객체로 되돌린다.
let prices = {
  banana: 1000,
  orange: 2000,
  meat: 4000,
};

let objectToArray = Object.entries(prices);
let mappingOfArray = objectToArray.map(([key, value]) => [key, value * 2]);
let arrayToObject = Object.fromEntries(mappingOfArray);

for(let key of Object.keys(arrayToObject)) {
  console.log(arrayToObject[key]); // 2000, 4000, 8000
}
profile
Web Developer

0개의 댓글