Object.keys()でオブジェクトのキー一覧を取得する
Object.keys()は、オブジェクト自身が持つ列挙可能な文字列キーを配列として返すメソッドです。基本構文はObject.keys(対象のオブジェクト)です。
JavaScript
const user = {
name: "Taro",
age: 30,
};
const keys = Object.keys(user);
console.log(keys);
// 期待される出力: ["name", "age"]戻り値は配列なので、配列の長さを調べたり、繰り返し処理を行ったりできます。空のオブジェクトに対しては空配列[]が返ります。
JavaScript
console.log(Object.keys({}));
// 期待される出力: []取得したキー一覧を繰り返し処理する
取得したキーを使って、元のオブジェクトから値を参照できます。キーを変数keyで受け取り、user[key]のように記述します。
JavaScript
const user = {
name: "Taro",
age: 30,
};
Object.keys(user).forEach((key) => {
console.log(`${key}: ${user[key]}`);
});
// 期待される出力:
// name: Taro
// age: 30単純にすべてのキーを処理するならforEach()が使いやすく、途中で処理を止めたい場合はfor...ofとbreakを組み合わせます。
| 方法 | 書きやすさ | 主な用途 |
|---|---|---|
| forEach() | 短く書きやすい | 一覧の表示など、単純な繰り返し |
| for…of | 制御しやすい | 条件に応じて途中で処理を止める |
開発現場で使いやすい利用例
フォーム入力や設定値の確認では、必要なキーがそろっているかを検証できます。
JavaScript
const formData = {
name: "Taro",
email: "taro@example.com",
};
const requiredKeys = ["name", "email"];
const isValid = requiredKeys.every((key) =>
Object.keys(formData).includes(key),
);
console.log(isValid);
// 期待される出力: true特定の項目が存在するかだけを調べる場合は、includes()を使うと簡潔です。キー一覧をmap()やfilter()につなげれば、表示対象のキーだけを抽出する処理にも応用できます。
JavaScript
const settings = {
theme: "dark",
language: "ja",
};
const hasTheme = Object.keys(settings).includes("theme");
console.log(hasTheme);
// 期待される出力: trueObject.keys()を使うときの注意点
- Object.keys()はオブジェクトを変更せず、キー名の配列を作成します。
- 取得したキーで値を参照するときは、同じオブジェクトに対して
object[key]を使います。 - 配列に使うとインデックスが文字列のキーとして返ります。配列の要素を処理する目的なら、
for...ofやforEach()のほうが意図を表しやすい場合があります。 - Object.keys()が対象にするのは、オブジェクト自身の列挙可能な文字列キーです。継承プロパティや列挙不可のプロパティまで取得したい場合は、別のAPIを検討します。