JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

【JavaScript】配列内の特定の要素を結合(マージ)する方法

JavaScriptでは、join()split()map() を組み合わせることで、配列内の特定の要素をまとめて結合することができます。本記事では、区切り文字で分かれた数値を1つの要素にマージする方法を解説します。

サンプルデータ

まず、次のような配列を例として考えてみましょう。

var values = [7, 5, 3, 8, 9, '/', 9, 5, 8, 2, '/', 3, 4, 8];

この配列には、区切り文字として「/」が含まれています。ここでの目標は、「/」で区切られた各グループの数値を連結し、次のような結果を得ることです。

[75389, '/', 9582, '/', 348]

結合の手順

特定の要素をマージするには、以下の手順で処理を行います。

  1. join('') — 配列全体を空文字で連結して、1つの文字列にします。
  2. split(/(\d+)/) — 正規表現を使い、数値のまとまりごとに分割します。キャプチャグループ (\d+) を使うことで、区切り文字(/)も結果に残ります。
  3. filter(Boolean) — 分割時に発生する空文字列を取り除きます。
  4. map() — 数値に変換できる要素は +v で数値型へ、そうでないもの(/など)はそのまま文字列として保持します。

コード例

以下が実際のコードです。

var values = [7, 5, 3, 8, 9, '/', 9, 5, 8, 2, '/', 3, 4, 8];
var afterMerge = values.join('')
  .split(/(\d+)/)
  .filter(Boolean)
  .map(v => isNaN(v) ? v : +v);
console.log(afterMerge);

このプログラムを実行するには、Node.js環境で以下のコマンドを使用します。

node fileName.js

ここでは、ファイル名を demo301.js として保存した場合を想定しています。

実行結果

コンソールには、次のように出力されます。

PS C:\Users\Amit\javascript-code> node demo301.js
[ 75389, '/', 9582, '/', 348 ]

このように、元々バラバラだった数値が「/」を境界としてグループごとに結合され、数値と区切り文字が混在する新しい配列が生成されます。isNaN() を使った判定により、数値部分だけを数値型に変換している点がポイントです。

  1. JavaScriptで配列の要素を同じ配列内に複製する方法

    JavaScriptでは、concat()メソッドとsort()メソッドを組み合わせることで、既存の配列の要素を同じ配列内に複製することができます。ここでは、実際に動作するサンプルコードを使って、その手順をわかりやすく解説します。 コード例 以下は、配列の要素を同じ配列内に複製するためのコード例です。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <meta name="viewport" cont

  2. 複数の値でJavaScript配列の要素を検索する方法

    JavaScriptである配列(arr)が、別の配列(arr1)の複数の値・すべての要素を含んでいるかどうかを確認したい場面はよくあります。そんなときは、every()メソッドとincludes()メソッドを組み合わせることで、シンプルに判定できます。以下はそのサンプルコードです。 コード例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content=