JavaScript

Object.keys()メソッド

 編集:2022.07.28 by T.A.

指定されたオブジェクトが持つプロパティの 名前の配列を、通常のループで取得するのと同じ順序で返します。

Object.keys(obj)
obj 自身の列挙可能なプロパティが返されるオブジェクトです。
戻り値

与えられたオブジェクトのすべての列挙可能なプロパティを表す文字列の配列。

解説

Object.keys() は、object で直接発見された列挙可能なプロパティに対応する文字列を要素とする配列を返します。プロパティの順序は、オブジェクトのプロパティをループにより手動で取得した場合と同じです。

Object.keys の使用
// 単純な配列
const arr = ['a', 'b', 'c'];
D=Object.keys(arr);	//=['0', '1', '2']
// オブジェクトのような配列
const obj = { 0: 'a', 1: 'b', 2: 'c' };
D=Object.keys(obj);	//=['0', '1', '2']
// キーの順序がランダムなオブジェクトのような配列
const anObj = { 100: 'a', 2: 'b', 7: 'c' };
D=Object.keys(anObj);	//=['2', '7', '100']
// getFoo は列挙可能ではないプロパティ
const myObj = Object.create({}, {
  getFoo: {
    value: function () { return this.foo; }
  }
});
myObj.foo = 1;
D=Object.keys(myObj);	//=['foo']

列挙可能ではないものを含むすべてのプロパティを取得したい場合、Object.getOwnPropertyNames() をご覧ください。

オブジェクト以外の型変換

ES5 では、このメソッドへの引数がオブジェクトではない(プリミティブである)場合、TypeError が発生します。

ES2015 以降では、オブジェクトでない引数はオブジェクトへ変換されるようになりました。

// In ES5
D=Object.keys('foo');	// TypeError: "foo" is not an object
D=Object.keys('foo');	//=["0", "1", "2"]。(ES2015 code)
ポリフィル

¶省く


テスト