JavaScriptのObject.keys().map()とArray.map()の違いを徹底解説
JavaScriptにおいて、Array.map()は配列の各要素に関数を適用し、その結果を新しい配列として返すメソッドです。一方、オブジェクトには直接map()メソッドが用意されていないため、Object.keys().map()という形で、まずObject.keys()を使ってオブジェクトのキーを配列として取得し、そこにmap()を適用するのが一般的なテクニックとなります。
この記事では、両者の使い方の違いを、実際に動作するサンプルコードと実行結果をもとにわかりやすく解説します。
サンプルコード
以下は、Object.keys().map()とArray.map()の動作を比較できるJavaScriptコードの例です。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
body {
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
}
.result,.sample {
font-size: 18px;
font-weight: 500;
color: rebeccapurple;
}
.result {
color: red;
}
</style>
</head>
<body>
<h1>Object.keys().map() VS Array.map()</h1>
<div class="sample">{1:'A',22:'B',55:'C',19:'D'}</div>
<div class="result"></div>
<button class="Btn">CLICK HERE</button>
<h3>上のボタンをクリックすると、オブジェクトのキーの合計値が表示されます</h3>
<div class="sample">[22,33,11,44]</div>
<div class="result"></div>
<button class="Btn">CLICK HERE</button>
<h3>上のボタンをクリックすると、配列の各要素が2倍されます</h3>
<script>
let resEle = document.querySelectorAll(".result");
let BtnEle = document.querySelectorAll(".Btn");
let obj = { 1: "A", 22: "B", 55: "C", 19: "D" };
let arr = [22, 33, 11, 44];
let total = 0;
BtnEle[0].addEventListener("click", () => {
Object.keys(obj).map((x) => (total += parseInt(x)));
resEle[0].innerHTML = "オブジェクトのキーの合計 = " + total;
});
BtnEle[1].addEventListener("click", () => {
resEle[1].innerHTML = arr.map((x) => x * 2);
});
</script>
</body>
</html>
コードのポイント
- Object.keys(obj):オブジェクト
objのすべてのキー(["1", "22", "55", "19"])を文字列の配列として返します。 - Object.keys().map():取得したキーの配列に対してmap()を適用し、
parseInt(x)で数値に変換しながら合計値を計算しています。 - Array.map():配列
arrの各要素を直接2倍にした新しい配列([44, 66, 22, 88])を生成します。
実行結果
上記のコードを実行すると、以下のような出力が得られます。

最初の「CLICK HERE」ボタンをクリックした場合:

このとき、オブジェクトのキー「1 + 22 + 55 + 19」の合計である97が画面に表示されます。
次に、2つ目の「CLICK HERE」ボタンをクリックした場合:

こちらは、配列の各要素が2倍になった[44, 66, 22, 88]が出力されます。
まとめ
配列に対してはArray.map()を直接使える一方、オブジェクトの場合はObject.keys()でキーを配列化してからmap()を適用する必要があります。用途に応じて使い分けることで、オブジェクトと配列のどちらでも柔軟にデータ変換処理を行えます。
-
JavaScriptのMap(マップ)オブジェクトとは?基本的な使い方をサンプルコード付きで解説
MapオブジェクトとはMap(マップ)オブジェクトは、ES6(ECMAScript 2015)で導入された組み込みオブジェクトの一つで、「キー」と「値」のペアで構成される要素を管理するコレクションです。通常のオブジェクトとよく似ていますが、Mapの大きな特徴は、キーにオブジェクトやプリミティブ値など、あらゆる型の値を使用できる点にあります。さらに、要素は挿入した順序で保持されるため、for...ofループなどを利用して、追加した順番どおりに反復処理を行うことも可能です。Mapオブジェクトの主なメソッドとプロパティメソッド / プロパティ説明new Map(iterable)配列などのイテラブル
-
JavaScriptでオブジェクトを新しい配列に変換する方法
JavaScriptでは、オブジェクトのプロパティやネストされたデータを取り出し、扱いやすい形で新しい配列にフォーマットできます。本記事では、学校(school)オブジェクトに含まれる生徒情報を、文字列形式の配列へ変換する実践的なコード例を紹介します。 ポイントとなるテクニック このサンプルでは、以下の2つのJavaScript機能を活用しています。 分割代入(Destructuring assignment):オブジェクトから特定のプロパティを簡潔に取り出す構文です。 for...of ループ:配列内の各要素を順番に処理するために使用します。 コード例 <!DOCTYPE html