Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

JavaScript辞典

  1. トップページ
  2. JavaScript辞典
  3. Object.keys() / values() / entries()

Object.keys() / values() / entries()対応: ES5(ECMAScript 2009)

オブジェクトが持つキー名、値、またはキーと値のペアを配列として取得します。

構文
// オブジェクトのキー名の一覧を配列で取得します。
Object.keys(オブジェクト)

// オブジェクトの値の一覧を配列で取得します。
Object.values(オブジェクト)

// オブジェクトのキーと値のペアを配列で取得します。
Object.entries(オブジェクト)
メソッド一覧
メソッド概要
Object.keys(オブジェクト)オブジェクトが持つ列挙可能なプロパティのキー名を文字列の配列として返します。
Object.values(オブジェクト)オブジェクトが持つ列挙可能なプロパティの値を配列として返します。
Object.entries(オブジェクト)オブジェクトが持つ列挙可能なプロパティの『[キー, 値]』ペアの配列を返します。
サンプルコード
var user = {
	name: "Kuu",
	age: 25,
	city: "Tokyo"
};

// キー名の一覧を取得します。
console.log(Object.keys(user)); // 『["name", "age", "city"]』と出力されます。

// 値の一覧を取得します。
console.log(Object.values(user)); // 『["Kuu", 25, "Tokyo"]』と出力されます。

// キーと値のペアを取得します。
console.log(Object.entries(user)); // 『[["name", "Kuu"], ["age", 25], ["city", "Tokyo"]]』と出力されます。

// Object.keys で forEach を使ってループできます。
Object.keys(user).forEach(function(key) {
	console.log(key + ": " + user[key]);
});

// Object.entries で分割代入を使ったループも可能です。
Object.entries(user).forEach(function([key, value]) {
	console.log(key + " = " + value);
});

// プロパティの数を取得できます。
console.log(Object.keys(user).length); // 『3』と出力されます。
実行結果

上記のコードを実行すると、コンソールには以下が出力されます。

["name", "age", "city"]                             // キー名の配列
["Kuu", 25, "Tokyo"]                                // 値の配列
[["name", "Kuu"], ["age", 25], ["city", "Tokyo"]]   // キーと値のペア
"name: Kuu"       // forEach でキーと値を出力
"age: 25"
"city: Tokyo"
"name = Kuu"      // entries + 分割代入で出力
"age = 25"
"city = Tokyo"
3                  // プロパティの数
概要

『Object.keys()』『Object.values()』『Object.entries()』はオブジェクトのプロパティ情報を配列として取得するメソッドです。for...in ループと異なりプロトタイプチェーンのプロパティは含まれないため、オブジェクト自身のプロパティだけを安全に取得できます。

戻り値は配列のため、『forEach()』『map()』『filter()』などの配列メソッドと組み合わせて柔軟な処理が可能です。プロパティの数を調べるには Object.keys(obj).length が便利で、オブジェクトが空かどうかの判定にも使えます。

『Object.entries()』はfor...of ループや分割代入と組み合わせると、キーと値の両方を効率よく処理できます。逆にキーと値のペアの配列からオブジェクトを作り直したい場合は Object.fromEntries() を使用します。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。