Object.keys()

Object.keys() 메서드는 주어진 객체의 속성 이름들을 일반적인 반복문과 동일한 순서로 순회되는 열거할 수 있는 배열로 반환합니다.

시도해보기

구문

js
Object.keys(obj)

매개변수

obj

객체

반환 값

주어진 객체 자체의 열거 가능한 문자열로된 속성 키를 나타내는 문자열 배열.

설명

Object.keys()object 에서 직접 찾은 열거 가능한 문자열 키 속성 이름에 해당하는 문자열을 요소로 하는 배열을 반환합니다. 이는 for...in 루프가 프로토타입 체인의 속성도 열거한다는 점을 제외하면 for...in 루프를 사용하여 반복하는 것과 동일합니다. Object.keys()가 반환하는 배열의 순서는 for...in 루프에서 제공하는 것과 동일합니다.

속성 값이 필요한 경우 Object.values()를 대신 사용하시기 바랍니다. 속성 키와 값이 모두 필요한 경우 Object.entries()를 대신 사용하시기 바랍니다.

예제

Object.keys() 사용하기

js
// 단순 배열
const arr = ["a", "b", "c"];
console.log(Object.keys(arr)); // console: ['0', '1', '2']

// 배열형 객체
const obj = { 0: "a", 1: "b", 2: "c" };
console.log(Object.keys(obj)); // console: ['0', '1', '2']

// 키와 순서가 무작위인 유사 배열 객체
const anObj = { 100: "a", 2: "b", 7: "c" };
console.log(Object.keys(anObj)); // console: ['2', '7', '100']

// getFoo 는 열거할 수 없는 속성입니다.
const myObj = Object.create(
  {},
  {
    getFoo: {
      value() {
        return this.foo;
      },
    },
  },
);
myObj.foo = 1;
console.log(Object.keys(myObj)); // ['foo']

만약 열거할 수 없는 속성도 포함한 문자열이 키인 객체 자체 속성을 원한다면, Object.getOwnPropertyNames()을 참고하시기 바랍니다.

원시형애서 Object.keys() 사용하기

객체가 아닌 인수는 강제로 객체로 변환됩니다. 문자열만 자체 열거 가능한 속성을 가질 수 있으며, 다른 모든 원시형은 빈 배열을 반환합니다.

js
// 문자열은 열거가능한 자체 속성처럼 인덱스를 가지고 있습니다.
console.log(Object.keys("foo")); // ['0', '1', '2']

// 다른 원시형은 자체 속성이 없숩니다.
console.log(Object.keys(100)); // []

참고: ES5에서는 비객체를 Object.keys()에 전달하면 TypeError가 발생합니다.

명세서

Specification
ECMAScript Language Specification
# sec-object.keys

브라우저 호환성

BCD tables only load in the browser

같이 보기