JavaScriptでJSONデータをキーごとにグループ化する方法を解説
JSONデータを特定のキー(この例では「name」)ごとにグループ化するには、元のオブジェクトからすべてのキーを取り出し、同じ値を持つ要素を新しいオブジェクト内の配列に push() メソッドで追加していくのが基本の考え方です。以下に具体的な手順とサンプルコードを紹介します。
サンプルコード
var details = {
"1": {
name: "John"
},
"2": {
name: "John"
},
"3": {
name: "David"
}
};
var objectWithGroupByName = {};
for (var key in details) {
var name = details[key].name;
if (!objectWithGroupByName[name]) {
objectWithGroupByName[name] = [];
}
objectWithGroupByName[name].push(details[key]);
}
console.log(objectWithGroupByName);
コードの解説
- まず、グループ化した結果を格納するための空のオブジェクト
objectWithGroupByNameを用意します。 for...inループでdetailsの各キー("1", "2", "3")を順番に取り出します。- 各要素の
nameの値を取得し、その名前がまだ結果オブジェクトに存在しない場合は、空の配列を作成します。 - 最後に
push()を使って、該当する名前の配列に要素を追加していきます。
プログラムの実行方法
上記のプログラムを実行するには、Node.js環境で次のコマンドを使用します。
node fileName.js
出力結果
ここではファイル名を demo122.js としています。実行すると、nameの値ごとにデータがまとめられ、次のような出力が得られます。
PS C:\Users\Amit\JavaScript-code> node demo122.js
{
John: [ { name: 'John' }, { name: 'John' } ],
David: [ { name: 'David' } ]
}
このように、「John」という名前を持つ2つのオブジェクトと、「David」という名前を持つ1つのオブジェクトが、それぞれ別の配列にグループ分けされていることが確認できます。
補足:reduce() を使った別の書き方
ES5以降で利用できる reduce() メソッドを使うと、同様の処理をより簡潔に記述できます。
var grouped = Object.keys(details).reduce(function (acc, key) {
var obj = details[key];
(acc[obj.name] = acc[obj.name] || []).push(obj);
return acc;
}, {});
console.log(grouped);
どちらの方法でも結果は同じですが、データ量が多い場合や配列形式のJSONを扱う場合は、reduce() を活用するとコードが読みやすくなります。用途に合わせて使い分けるとよいでしょう。
-
JavaScriptで値に基づいてオブジェクトをグループ化する方法
JavaScriptでは、reduce()メソッドを活用することで、配列内のオブジェクトを特定の値(プロパティ)に基づいて効率的にグループ化できます。たとえば、複数人のデータを「年齢」ごとにまとめたい場合などに役立ちます。ここでは、実際に動作するサンプルコードをもとに、実装手順と仕組みをわかりやすく解説します。 サンプルコード <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewpo
-
JSONをExcelに変換する方法!Power Queryとオンラインツールの使い方を徹底解説
JSON(JavaScript Object Notation)は、さまざまな種類のデータを保存するために広く利用されているデータ形式です。データの保存だけでなく、2つのサーバー間でデータをやり取りする際にも活用されており、APIなどを通じてWebサーバーと通信する場面でよく目にします。JSONファイルの構造は非常にシンプルで、配列とオブジェクトで構成されています。典型的なJSONファイルでは、キーと値のペアが配列内の各オブジェクトに格納されており、インデックスとキーを指定することで目的のデータにアクセスできます。プログラマーや開発者にとってJSONの構造はごく基本的なものですが、一般ユーザー