Apps Scriptリファレンス: Apps Script Reference |障害・課題追跡: IssueTracker |Google Workspace: Status Dashboard - Summary

2018年3月27日火曜日

Array.prototype.push.applyで配列を結合する(2次元配列を1次元配列にしたい)


このような2次元配列があって

[["あいうえお", "かきくけこ"],["さしすせそ", "たちつてと"],["なにぬねの", "はひふへほ"]];


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


Array.concatを使う場合は



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



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



補足


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

array1,2,3,4を分けてみてみると
array4もマージされた配列を返している


array1
[[{"en":"english"},{"ja":"japanese"},{"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"},{"en":"english"},{"ja":"japanese"},{"fr":"french"},{"it":"italian"},{"ko":"korean"},{"de":"Deutschland"}]]



Latest post

Googleドキュメントに見出しを追加したい

今回の例では、ドキュメントの末尾に「見出しD」 を追加します。 見出しA, B, C, Dのスタイルは、見出し3 ( HEADING3 ) に設定しています。  下記Code.gsの  GOOGLE_DOCUMENT_URL を設定して  addHeadingToEnd()  を...