JavaScriptで配列の偶数と奇数を左右に分けて並べ替える方法
本記事では、数値の配列を受け取り、すべての偶数を奇数より左側に、すべての奇数を偶数より右側に配置し直した配列を返すJavaScript関数の実装方法を解説します。
実装の考え方
Array.prototype.sort()メソッドには比較関数を渡すことができます。この比較関数内で各要素が偶数か奇数かを判定し、偶数を優先的に左へ移動させることで、目的の並び順を実現できます。
それでは、実際のコードを見ていきましょう。
コード例
const arr = [2, 6, 3, 7, 8, 3, 5, 4, 3, 6, 87, 23, 2, 23, 67, 4];
const isEven = num => num % 2 === 0;
const sorter = (a, b) => {
if(isEven(a) && !isEven(b)){
return -1;
};
if(!isEven(a) && isEven(b)){
return 1;
};
return 0;
};
arr.sort(sorter);
console.log(arr);出力結果
コンソールには以下のように出力されます。
[ 2, 6, 8, 4, 6, 2, 4, 3, 7, 3, 5, 3, 87, 23, 23, 67 ]
コードの解説
isEven関数は、数値を2で割った余りが0かどうかを判定するヘルパー関数です。
sorter関数(比較関数)では、次のロジックで並べ替えを行っています。
- aが偶数でbが奇数の場合:-1を返し、aをbの前に配置
- aが奇数でbが偶数の場合:1を返し、bをaの前に配置
- 両方が偶数または両方が奇数の場合:0を返し、元の順序を維持
なお、この方法では偶数同士・奇数同士の相対的な順序は保持されません。元の順序も維持したい場合は、filter()メソッドを使って偶数と奇数の配列をそれぞれ作成し、連結する方法も検討するとよいでしょう。
-
CSSのnth-childでHTML要素に奇数・偶数のスタイルを追加する方法
Webページを作っていると、リストやカードなど複数の要素に対して「奇数番目」「偶数番目」で異なるスタイルを適用したい場面がよくあります。そのようなときは、CSSの擬似クラスである nth-child(odd) と nth-child(even) を使えば、要素に一つずつクラスを手動で追加しなくても、簡単にスタイルを切り替えることができます。CSSのnth-childを使った基本例以下のコードでは、subjectName クラスを持つ要素に対して、奇数番目の要素は青色、偶数番目の要素は紫色を自動的に適用しています。サンプルコード<!DOCTYPE html> <html lan
-
【初心者向け】JavaScriptのFileとFileReaderを使ってファイルを読み込む方法
JavaScriptにおけるFileとFileReaderとは? JavaScriptでは、<input type=file>要素を使うことで、ユーザーにローカルファイルを選択させることができます。選択されたファイルはFileオブジェクトとして取得でき、ファイル名・サイズ・MIMEタイプなどの基本情報へアクセス可能です。 さらに、FileReaderオブジェクトを利用すれば、選択されたファイルの中身を非同期で読み込み、テキストやデータURLとして扱うことができます。 サンプルコード 以下は、JavaScriptでFileとFileReaderを使用して、ファイルの詳細情報を表示し