このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。
Object.keys()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
Object.keys() は静的メソッドで、指定されたオブジェクトが持つプロパティの名前の配列を、通常のループで取得するのと同じ順序で返します。
In this article
試してみましょう
const object = { a: "some string", b: 42, c: false,};console.log(Object.keys(object));// 予想される結果: Array ["a", "b", "c"]構文
Object.keys(obj)引数
obj自身の列挙可能なプロパティが返されるオブジェクトです。
返値
与えられたオブジェクトのすべての列挙可能なプロパティを表す文字列の配列。
解説
Object.keys() は、object で直接見つかった列挙可能なプロパティに対応する、文字列を要素とする配列を返します。これはfor...in ループによる反復処理と同じですが、for...in ループではプロトタイプチェーン内のプロパティも同様に反復処理します。Object.keys() が返す配列の順序は、for...in ループで指定された順序と同じです。
プロパティ値が必要な場合は、代わりにObject.values() を使用してください。プロパティのキーと値の両方が必要な場合は、代わりにObject.entries() を使用してください。
例
>Object.keys() の使用
// 基本的な配列const arr = ["a", "b", "c"];console.log(Object.keys(arr)); // ['0', '1', '2']// オブジェクトのような配列const obj = { 0: "a", 1: "b", 2: "c" };console.log(Object.keys(obj)); // ['0', '1', '2']// キーの順序がランダムなオブジェクトのような配列const anObj = { 100: "a", 2: "b", 7: "c" };console.log(Object.keys(anObj)); // ['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() の使用
オブジェクト以外の引数はオブジェクトへ変換されます。undefined とnull はオブジェクトに変換することができず、TypeError を前もって発生します。文字列のみが自分自身で列挙可能なプロパティを持つことができ、他のすべてのプリミティブは空の配列を返します。
// 文字列は列挙可能な独自のプロパティとしてインデックスを持っているconsole.log(Object.keys("foo")); // ['0', '1', '2']// undefined と null以 外のプリミティブは、自分自身でプロパティを持つことはないconsole.log(Object.keys(100)); // []メモ:ES5 では、Object.keys() にオブジェクト以外を渡すとTypeError が発生していました。
仕様書
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-object.keys> |