JavaScriptにブール型(Boolean)の配列は存在する?型付き配列の種類と代替方法を解説
JavaScriptにブール型の配列はありますか?
結論から言うと、JavaScriptにはブール値(true / false)専用の型付き配列は存在しません。ブール値を格納するための「BooleanArray」のような組み込みオブジェクトは用意されていません。
JavaScriptで利用できる型付き配列は、整数および浮動小数点数向けの以下の9種類のみです。
JavaScriptで使える型付き配列の一覧
- Int8Array … 8ビット符号付き整数
- Uint8Array … 8ビット符号なし整数
- Uint8ClampedArray … 8ビット符号なし整数(範囲外の値をクランプ)
- Int16Array … 16ビット符号付き整数
- Uint16Array … 16ビット符号なし整数
- Int32Array … 32ビット符号付き整数
- Uint32Array … 32ビット符号なし整数
- Float32Array … 32ビット浮動小数点数
- Float64Array … 64ビット浮動小数点数
上記のように、型付き配列はさまざまなサイズの整数型と浮動小数点数型にのみ対応しており、ブール型や文字列型などはサポートされていません。
ブール値を扱いたい場合の代替方法
フラグや真偽値の集合を効率的に扱いたい場合は、次のような方法が一般的です。
1. Uint8Arrayを使う
最もシンプルな代替策は、Uint8Arrayを使用して 0 を false、1 を true として扱う方法です。
const flags = new Uint8Array(4);
flags[0] = 1; // true
flags[1] = 0; // false
console.log(flags[0] === 1); // true2. 通常の配列(Array)を使う
パフォーマンスやメモリ効率がそこまで求められないのであれば、通常のArrayにそのままtrue / falseを格納するのが最も読みやすく簡単です。
const flags = [true, false, true];
console.log(flags[0]); // true3. ビット演算でビットフラグとして管理する
メモリを極限まで節約したい場合は、1つの数値の各ビットをフラグとして管理する手法もあります。Uint32Arrayなら1要素あたり最大32個の真偽値を表現できます。
const bits = new Uint32Array(1);
bits[0] |= (1 << 3); // 3番目のフラグをON
const flagOn = (bits[0] & (1 << 3)) !== 0;
console.log(flagOn); // trueまとめ
JavaScriptにはブール型専用の型付き配列は存在せず、型付き配列は整数・浮動小数点数のみを対象としています。真偽値のコレクションが必要な場合は、Uint8Arrayによる0/1表現、通常の配列、あるいはビット演算によるフラグ管理といった代替手段を選択するとよいでしょう。
-
JavaScriptで配列の配列をオブジェクトに変換する方法
はじめにJavaScriptでは、「キーと値のペア」を格納した配列の配列(ネストされた配列)を、扱いやすいオブジェクトへ変換したい場面がよくあります。本記事では、その具体的な実装方法をわかりやすく解説します。例として、あるクリケット選手の成績データを表す次のような配列の配列を想定してみましょう。const arr = [ [Name, V Kohli], [Matches, 13], [Runs, 590], &nb
-
JavaScriptでネストされた配列をマージして1次元配列に変換する方法
問題の概要2つのネストされた(入れ子構造の)配列 arr1 と arr2 を引数として受け取り、それらのすべての要素を含む新しい配列を返すJavaScript関数を作成します。ただし、返される配列は1次元(フラットな構造)である必要があります。入力例const arr1 = [ 1, [ 2, [ 4, 5, [ 6 ] ] ] ]; const arr2 = [ 11, 12, [ 16, 18, [ 19, 21,