LANG SELRCT

コードを書く場所についてはこちら

2018年3月27日火曜日

Array.concatで配列を結合する


このような二次元配列があって
[["あいうえお", "かきくけこ"],["さしすせそ", "たちつてと"],["なにぬねの", "はひふへほ"]]


このように1次元配列にまとめたい
 [あいうえお, かきくけこ, さしすせそ, たちつてと, なにぬねの, はひふへほ]


Array.prototype.push.applyを使う場合は




コード.gs
function array_concat(){
  var array = [["あいうえお", "かきくけこ"],["さしすせそ", "たちつてと"],["なにぬねの", "はひふへほ"]];
  for(var i = 1; i < array.length; i++){
    array[0] = array[0].concat(array[i]);
  }
  Logger.log(array[0]);
}
意訳
この機能がやること
2次元配列を用意して
その中の一次元配列の数だけ以下を繰り返す
0番目の一次元配列に1番目以降の一次元配列をつなげて

出来上がったarray[0]をログに出す



実行結果


その2


このような配列があって
  var array1 = [{en: "english"}, {ja: "japanese"}];
  var array2 = [{fr: "french"}, {it: "italian"}];
  var array3 = [{ko: "korean"}, {de: "Deutschland"}];


このようにひとつにまとめたい
 [[{"en":"english"},{"ja":"japanese"},{"fr":"french"},{"it":"italian"},{"ko":"korean"},{"de":"Deutschland"}]


以下のコードと似ていますが
Array.prototype.push.applyで配列を結合する
array4がマージ前のarray1を返すところが異なります



コード.gs
function array_concat(){
  var array1 = [{en: "english"}, {ja: "japanese"}];
  var array2 = [{fr: "french"}, {it: "italian"}];
  var array3 = [{ko: "korean"}, {de: "Deutschland"}];
  var array4 = array1;
  var array1 = array1.concat(array2) 
                  .concat(array3);
  Logger.log([JSON.stringify(array1), JSON.stringify(array2), JSON.stringify(array3), JSON.stringify(array4)]);
}
意訳
この機能がやること
1つめの配列
2つめの配列
3つめの配列
array4にarray1を入れる
array1にarray2を追加
さらにarray3を追加
それぞれをログに出す



補足


実行結果を見るとこのようなログが出ます

array1,2,3,4を分けてみてみると
array4はマージ前のarray1の配列を返している


array1
[[{"en":"english"},{"ja":"japanese"},{"fr":"french"},{"it":"italian"},{"ko":"korean"},{"de":"Deutschland"}],

array2
[{"fr":"french"},{"it":"italian"}],

array3
[{"ko":"korean"},{"de":"Deutschland"}],

array4
[{"en":"english"},{"ja":"japanese"}]]