[Javascript] 配列に複数の配列を混ぜ込む方法

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

Javascriptを使って、任意のデータを整形して組み合わせる時に、配列の結合を行いたい場合がある。
 

普通に一時配列どうしを2つくっつけたいのであれば、concat機能を使えばいいのだが、
 

今回は1つの配列内のデータで値の1つを、配列に置き換えるというやり方だ。
 

少し複雑なのだが、グループ設定データを延べデータに変換するような場合にニーズがある。
※個人的にはたまに発生するので、今回関数化してみました。

ソースコード

 

【関数リファレンス】
__array_merge(arr_base , arr_add , num);
arr_base : 元の配列
arr_add : 入換をする配列
num : 元配列の入換をする番号
return @ 結合後の配列
 

【注意】
functionを変数にいれてますが、普通に”function __array_merge()…”としてもらっても大丈夫です。

使い方

 

【実行結果】

 

元配列の数値で”2″の値を”a,b,c”という文字列配列にそっくり入れ替えてみました。

解説

そもそも、spliceで簡単に入れ替えができると考えて仕事で行った所、splideでは、配列の特定箇所に配列を入れ込んでしまうため、spliceで前後に分割して、全ての配列をconcatで結合するというやり方で行ってみました。
 

もっとスマートなやり方でできるかもしれませんが、とりあえず、これはこれで仕事で使ってみたので、備忘録としておきます。

2 comments

  • 検索でこのページを見つけたので,お節介かもしれませんが参考情報です.

    今回は番号を指定して置き換えしていますが,要素を指定する場合はArrayのflatMapが利用できます.
    https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/flatMap

    例のコードは以下のようになります.
    js
    var arr_base = [0,1,2,3,4,5];
    var arr_change = ["a","b","c"];

    arr_base.flatMap( (n) => (n == 2) ? arr_change : [n] )
    // [0 ,1 ,"a" ,"b" ,"c" ,3 ,4 ,5]

    • とりさん、ご報告ありがとうございます。
      flatmapは、比較的最新ブラウザ対応であるので、旧式コードで対応しておいた次第です。
      あと、対してコーディングのボリュームが変わらないのと、見た目の理解度を考えるとレガシーコードも悪くないかと。
      でも、ブラウザ進化を考えるとこうした書き方に馴染んでいかないといけないかもですね。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です