Movatterモバイル変換


[0]ホーム

URL:


  1. 開発者向けのウェブ技術
  2. JavaScript
  3. JavaScript リファレンス
  4. 標準組み込みオブジェクト
  5. Object
  6. keys()

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

View in EnglishAlways switch to English

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

試してみましょう

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 が発生していました。

仕様書

Specification
ECMAScript® 2026 Language Specification
# sec-object.keys

ブラウザーの互換性

関連情報

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp