JavaScriptで配列内のすべての要素が同じかどうかを確認する方法
JavaScriptでは、配列に含まれるすべての要素が同じ値かどうかを確認したい場面があります。本記事では、リテラルの配列を受け取り、すべての値が同一であれば true、そうでなければ false を返す関数の実装方法を解説します。
実装例:sort()を活用したシンプルな方法
最もシンプルなアプローチは、配列をソートし、最初の要素と最後の要素を比較する方法です。すべての要素が同じ値であれば、ソート後も最初と最後の要素は必ず一致するはずです。
const arr1 = [1, 2, 3];
const arr2 = [1, 1, 1];
const checkIfSame = (arr = []) => {
// 配列の長さを取得
const { length: l } = arr;
// 空配列や要素が1つの場合は true を返す
if (l <= 1) {
return true;
}
// 配列をソート
arr.sort();
// 最初と最後の要素が一致するかどうかを判定
return arr[0] === arr[l - 1];
};
console.log(checkIfSame(arr1));
console.log(checkIfSame(arr2));
出力結果
コンソールには以下のように出力されます。
false true
arr1 の要素はバラバラの値のため false、arr2 はすべて同じ値のため true が返されています。
別のアプローチ:every() メソッドを使う
より直感的で読みやすい方法として、Array.prototype.every() を使うこともできます。このメソッドは、配列のすべての要素が指定した条件を満たす場合に true を返します。
const checkIfSame = (arr = []) => {
return arr.every(val => val === arr[0]);
};
console.log(checkIfSame([1, 1, 1])); // true
console.log(checkIfSame([1, 2, 3])); // false
every() は最初の要素と各要素を順番に比較し、不一致が見つかった時点で処理を終了するため、大きな配列でも効率的に動作します。
実装時の注意点
- sort() は元の配列を変更する:
sort()は破壊的メソッドのため、元の配列を保持したい場合は[...arr].sort()のようにコピーを作成してからソートしましょう。 - 空配列の扱い: 上記の実装では、空配列や要素が1つだけの配列は「すべての要素が同じ」とみなして
trueを返します。要件に応じて挙動を調整してください。 - 数値以外の型にも対応: 文字列やブーリアンなど、
===で比較できる値であればどのようなリテラルでも動作します。
-
JavaScriptでオブジェクトの列挙可能なプロパティ値を配列として取得する方法
JavaScriptでは、Object.keys() や for...in ループなどを使ってオブジェクトからキーや値を取り出すことができますが、これらの方法だけでは値を配列として直接取得することはできません。配列形式のデータは、フィルタリングやマップ処理など、さまざまな場面で非常に便利です。そこで活躍するのが Object.values() メソッドです。このメソッドを使うと、オブジェクトが持つ列挙可能なプロパティの値を要素とする配列を受け取ることができます。構文Object.values(obj);Object.values() は引数としてオブジェクトを受け取り、そのオブジェクトのプロパ
-
JavaScriptで配列の要素を同じ配列内に複製する方法
JavaScriptでは、concat()メソッドとsort()メソッドを組み合わせることで、既存の配列の要素を同じ配列内に複製することができます。ここでは、実際に動作するサンプルコードを使って、その手順をわかりやすく解説します。 コード例 以下は、配列の要素を同じ配列内に複製するためのコード例です。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <meta name="viewport" cont