1 minute read

Object.keys, values, entries

  • keys(), values(), entries() 와 같은 메서드

    • 허용되는 자료 구조

      Map

      Set

      Array

허용되는 자료 구조 외에 자료구조 직접 만들어서 사용하려면 기존에 구현된 메서드 쓰지 못하고 직접 커스텀 메서드 구현해야 함

  • Object.keys, values, entries

    일반 객체에 사용가능한 메서드.

    • 메서드

      Object.keys(obj) : 키가 담긴 배열 반환

      Object.values(obj) : 값이 담긴 배열 반환

      Object.entries(obj) : [key, value] 쌍이 담긴 배열 반환

    • Map, Set, Array 에 적용되는 메서드와의 차이점

      1. obj.keys() 가 아닌 Object.keys(obj) 호출

        유연성 보장

        JS에선 복잡한 자료구조 전체가 객체에 기반

        커스텀 메서드와 Object 에서의 내장 메서드 둘다 적용 가능

      2. iterable 객체가 아닌 객체의 한 종류인 배열 반환

        하위 호완성 고려 (for..of)

    • 심볼형 프로퍼티 무시

      심볼형 키가 필요한 경우 심볼형 키만 배열 반환하는 메서드 Object.getOwnPropertySymbols 사용

      모든 키 배열 형태로 반환하는 메서드 Object.ownKeys(obj) 사용

  • 객체 변환

    Object.entries, Object.fromEntries 순차적으로 적용하여 객체에도 배열 전용 메서드 사용 가능

    • 순서

      1. Object.entries(obj) 사용하여 객체 키-값 쌍 요소로 갖는 배열 찾음

      2. 1.에서 만든 배열에 map 등의 배열 전용 메서드 사용

      3. 2.에서 반환된 배열에 Object.fromEntries(array) 적용해 배열 다시 객체로 되돌림

요약

  • keys(), values(), entries() 같은 메서드는 Map, Set, Array 외엔 보장 안 됨.

  • 자료구조 직접 만들어서 사용하려면 기존에 구현된 메서드 쓰지 못하고 커스텀 메서드 구현하거나 다른 방법 취해야 함.

  • Object.keys, values, entries 는 일반 객체에 사용 가능함

  • keys(), values(), entries() 와 다른 점은 인자에 객체 넣어서 사용한다는 점과 이터러블 객체가 아닌 객체의 한 종류인 배열을 반환 한다는 점.

  • 심볼형 프로퍼티는 따로 메서드 사용해야 함.

  • 객체 변환은 Object.entries(obj) 통해 키-값 쌍을 요소로 갖는 배열 얻은 후 Object.fromEntries(array) 적용해 다시 배열 객체로 되돌림

Categories: ,

Updated: