JavaScriptで配列の要素をデータ型ごとにグループ化する方法
はじめに
JavaScriptでは、数値・文字列・真偽値など異なるデータ型が混在する配列を扱う場面があります。本記事では、そのような配列を受け取り、「データ型名をキー」「その型に属する要素の配列を値」とするオブジェクトを返す関数の実装方法を解説します。
問題の概要
混合データ型の配列を引数として受け取り、各要素をtypeof演算子で判定して、同じデータ型同士をまとめたオブジェクトを返す関数を作成します。
実装コード
const arr = [1, 'a', [], '4', 5, 34, true, undefined, null];
const groupDataTypes = (arr = []) => {
const res = {};
for(let i = 0; i < arr.length; i++){
const el = arr[i];
const type = typeof el;
if(res.hasOwnProperty(type)){
res[type].push(el);
}else{
res[type] = [el];
};
};
return res;
};
console.log(groupDataTypes(arr));コードの解説
この関数の処理の流れは以下の通りです。
- 結果を格納するための空オブジェクト
resを用意します。 - forループで配列の各要素を順番に取り出し、
typeof演算子でデータ型名(文字列)を取得します。 hasOwnProperty()を使って、その型のキーがすでに存在するか確認します。- 存在すれば既存の配列に
push()で追加し、存在しなければ新しい配列を作成します。 - 最後に完成したオブジェクトを返します。
実行結果
上記のコードをコンソールで実行すると、次のような出力が得られます。
{
number: [ 1, 5, 34 ],
string: [ 'a', '4' ],
object: [ [], null ],
boolean: [ true ],
undefined: [ undefined ]
}注意点:nullは「object」になる
出力結果を見ると、null が object グループに分類されていることがわかります。これはJavaScriptの仕様によるもので、typeof null は歴史的な経緯から "object" を返します。厳密にnullを区別したい場合は、以下のように判定を追加すると良いでしょう。
const type = el === null ? 'null' : typeof el;
reduceを使った別の実装例
より関数型的なアプローチとして、Array.prototype.reduce() を使うこともできます。
const groupDataTypes = (arr = []) =>
arr.reduce((acc, el) => {
const type = typeof el;
(acc[type] ||= []).push(el);
return acc;
}, {});こちらの書き方では、論理代入演算子 ||=(ES2021以降)を利用することで、キーの有無チェックを簡潔に記述できます。
まとめ
typeof 演算子とオブジェクトを組み合わせることで、混合データ型の配列を簡単にグループ化できます。ただし null や配列など、typeofだけでは正確に判定できないケースがある点には注意が必要です。用途に応じて判定ロジックを拡張して活用してください。
-
JavaScriptのArray.from()メソッドとは?使い方と実例をわかりやすく解説
Array.from()メソッドは、配列風オブジェクト(array-like)や反復可能オブジェクト(iterable)から、新しい配列オブジェクトを作成するための便利なメソッドです。文字列、Map、Set、NodeListなど、さまざまなデータを手軽に配列へ変換できます。 Array.from()の基本的な動作 例えば、文字列「HelloWorld」に対してArray.from()を使用すると、1文字ずつ分割された新しい配列が生成されます。以下に実際のコード例を示します。 サンプルコード <!DOCTYPE html> <html lang="ja"&g
-
JavaScriptでJSON配列からデータを読み取る方法をサンプルコード付きで解説
Web開発では、APIから取得したJSONデータを処理する場面が非常によくあります。本記事では、JavaScriptを使ってJSON配列からデータを読み取り、画面に表示する方法を、実際に動作するサンプルコードとともにわかりやすく解説します。 JSON配列からデータを読み取る基本の流れ JSON形式の文字列をJavaScriptで扱うには、まずJSON.parse()メソッドで文字列をJavaScriptのオブジェクト(配列)に変換します。変換後は、forEach()メソッドなどを活用して、配列の各要素に格納された値へ簡単にアクセスできます。 サンプルコード <!DOCTYPE htm