← 返回首页
Object.keys() - JavaScript | MDN

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

Object.keys()

Baseline 広く利用可能

この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2015年7月以降、すべてのブラウザーで利用可能です。

Object.keys() は静的メソッドで、指定されたオブジェクトが持つプロパティの名前の配列を、通常のループで取得するのと同じ順序で返します。

目次

試してみましょう

const object = { a: "some string", b: 42, c: false, }; console.log(Object.keys(object)); // 予想される結果: Array ["a", "b", "c"]

構文

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)); // ['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() の使用

オブジェクト以外の引数はオブジェクトへ変換されます。 undefinednull はオブジェクトに変換することができず、 TypeError を前もって発生します。文字列のみが自分自身で列挙可能なプロパティを持つことができ、他のすべてのプリミティブは空の配列を返します。

js
// 文字列は列挙可能な独自のプロパティとしてインデックスを持っている console.log(Object.keys("foo")); // ['0', '1', '2'] // undefined と null以 外のプリミティブは、自分自身でプロパティを持つことはない console.log(Object.keys(100)); // []

メモ: ES5 では、 Object.keys() にオブジェクト以外を渡すと TypeError が発生していました。

仕様書

仕様書
ECMAScript® 2027 Language Specification
# sec-object.keys

ブラウザーの互換性

ブラウザー互換性一覧表を表示するには、JavaScript を有効にしてください。

関連情報