Object.values()

values()는 JS의 내장 객체 Object가 갖는 정적 메서드 중 하나다.
인자로 열거 가능한(enumarable) 객체를 받으며, 인자로 들어온 객체 내 속성의 값들로 이루어진 배열을 리턴한다.

이때 배열 내 값 순서는 객체의 속성을 for in 구문과 순회할 때와 동일하다.

// 유사 배열 (숫자를 속성으로 사용하는 객체)
var obj = { 0: "a", 1: "b", 2: "c" };
console.log(Object.values(obj)); // ['a', 'b', 'c']

주의할 점

  • 내부에 열거 가능하지 않은 속성이 있을 경우 결과 배열에서 제외된다. 또한 심볼형 프로퍼티를 무시한다.
    var my_obj = Object.create(
    {},
    {
      getFoo: {
        value: function () {
          return this.foo;
        },
      },
    },
    );
    my_obj.foo = "bar";
    console.log(Object.values(my_obj)); // ['bar']
    
  • for-in 구문과 값 배치 순서가 같다. 즉 속성명이 숫자일 경우 숫자가 자동 오름차순 정렬되어 반환된다.
    var an_obj = { 100: "a", 2: "b", 7: "c" };
    console.log(Object.values(an_obj)); // ['b', 'c', 'a']
    
  • 인자로 객체가 아닌 값을 전달하면, 객체로 강제 변환되어 적용된다.
    console.log(Object.values("foo")); // ['f', 'o', 'o']
    
  • 배열도 객체이므로, 인자로 실제 배열이 들어올 수 있다.
    배열이 인자로 들어갈 경우 인자 배열과 리턴되는 배열은 똑같은 형태의 값을 지니나, 서로 다른 주소값을 가진 복사 배열이 반환된다.
    const myArray = ['유고스타', '유산슬', '유라섹', '유르페우스', '유DJ뽕디스파뤼', '유샘', '닭터유', '유두래곤'];
    
    const myValues = Object.values(myArray);
    
    console.log(myValues);
    // (8) ["유고스타", "유산슬", "유라섹", "유르페우스", "유DJ뽕디스파뤼", "유샘", "닭터유", "유두래곤"]
    
    console.log(myArray === myValues);
    // false
    

    레퍼런스

  • MDN Object.values()
  • 모던 JavaScript 튜토리얼
  • https://bigtop.tistory.com/61

태그: ,

카테고리:

업데이트: