> For the complete documentation index, see [llms.txt](https://april.gitbook.io/learning-js/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://april.gitbook.io/learning-js/chapter-9./9.1/9.1.2-object.keys.md).

# 9.1.2 Object.keys

* 객체에서 나열 가능한 문자열 프로퍼티를 배열로 반환
  * 객체의 프로퍼티를 **배열로 가져와야할 때 편함**
* hasOwnProperty를 체크할 필요 없음

```javascript
const SYM = Symbol();
const o = { a: 1, b: 2, c: 3, [SYM]: 4 };

Object.keys(o).forEach(prop => console.log(`${prop}: ${o[prop]}`));
```

결과

```bash
a: 1
b: 2
c: 3
```

#### 객체에서 x로 시작하는 프로퍼티를 모두 가져오는 경우

```javascript
const o = { apple: 1, xochitl: 2, ballon: 3, guitar: 4, xylophone: 5 };

Object.keys(o)
    .filter(prop => prop.match(/^x/))
    .forEach(prop => console.log(`${prop}: ${o[prop]}`));
```

결과

```bash
xochitl: 2
xylophone: 5
```
