JavaScriptでオブジェクトの配列を配列の配列(2次元配列)に変換する方法
オブジェクトの配列を配列の配列へ変換する
たとえば、次のようなオブジェクトの配列があるとします。
const arr = [
{"2015":11259750.05},
{"2016":14129456.9}
];このような配列を引数として受け取り、入力データをもとに「配列の配列」(2次元配列)を組み立てるJavaScript関数を作成することを考えます。各オブジェクトのキーと値をペアにした配列へと変換するイメージです。
したがって、上記の配列に対して期待される出力は次のようになります。
const output = [ [2015,11259750.05], [2016,14129456.9] ];
実装方法
変換の手順はシンプルです。Object.keys() を使えばオブジェクトが持つキーの一覧を取得できるので、まず各オブジェクトの先頭のキーを取り出します。続いて、そのキーを parseInt() で数値に変換し、対応する値とセットにして結果用の配列へ追加していきます。
コードは次のようになります。
const arr = [
{"2015":11259750.05},
{"2016":14129456.9}
];
const mapToArray = (arr = []) => {
const res = [];
arr.forEach(function(obj,index){
const key= Object.keys(obj)[0];
const value = parseInt(key, 10);
res.push([value, obj[key]]);
});
return res;
};
console.log(mapToArray(arr));より簡潔な書き方:mapを使う別解
forEachで結果配列を手動で組み立てる代わりに、Array.prototype.map() を使えば同じ処理をより簡潔に記述できます。
const mapToArray = (arr = []) =>
arr.map(obj => {
const key = Object.keys(obj)[0];
return [parseInt(key, 10), obj[key]];
});
console.log(mapToArray(arr));出力結果
いずれのコードでも、コンソールには次のように出力されます。
[ [ 2015, 11259750.05 ], [ 2016, 14129456.9 ] ]
ポイント
- parseInt(key, 10):キーを10進数の整数に変換しています。キーを文字列のまま扱いたい場合は、この変換を省略してください。
- Object.keys(obj)[0]:1つのオブジェクトに複数のキーがある場合、先頭のキーのみが使用されます。すべてのキーと値のペアが必要なケースでは、Object.entries() の利用も検討するとよいでしょう。
-
JavaScriptで1つのオブジェクトを人物ごとのオブジェクト配列に変換する方法
はじめに JavaScriptでは、フラットなキーと値のペアで構成されたオブジェクトを、意味のあるまとまりごとのオブジェクト配列へ変換したいケースがよくあります。例えば「Person1_Age」「Person2_Height」のように、複数人分のデータが1つのオブジェクトに混在している場合、人物ごとにデータを分割して整理しておくと、後続の処理が格段に行いやすくなります。 問題の概要 次のような、複数人分の年齢・身長・体重のデータを持つオブジェクトを考えてみましょう。 const obj = { Person1_Age: 22, Person1_H
-
JavaScriptでオブジェクトの配列を1つのプレーンなオブジェクトにまとめる方法
JavaScriptでは、複数のオブジェクトに分かれたプロパティを、1つのプレーンなオブジェクト(単一のオブジェクト)に統合したい場面があります。本記事では、オブジェクトの配列を受け取って、その中に含まれるすべてのプロパティを1つのオブジェクトへ集約する方法を、サンプルコードとともにわかりやすく解説します。変換元となるデータ例として、次のように2つのオブジェクトを持つ配列を用意します。const arr = [{ name: Dinesh Lamba, age: 23, &n