LANG SELRCT

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

2018年5月6日日曜日

オブジェクトを二次元配列にして返す


このようなオブジェクトを
var obj = [
  {"en": "Aries", "ja": "おひつじ座"},
  {"en": "Taurus", "ja": "おうし座"},
  {"en": "Gemini", "ja": "ふたご座"},
  {"en": "Cancer", "ja": "かに座"},
  {"en": "Leo", "ja": "しし座"},
  {"en": "Virgo", "ja": "おとめ座"},
  {"en": "Libra", "ja": "てんびん座"},
  {"en": "Scorpius", "ja": "さそり座"},
  {"en": "Sagittarius", "ja": "いて座"},
  {"en": "Capriconus", "ja": "やぎ座"},
  {"en": "Aquarius", "ja": "みずがめ座"},
  {"en": "Pisces", "ja": "うお座"}
]


このような配列にして返したり
[[Aries, おひつじ座], [Taurus, おうし座], [Gemini, ふたご座], [Cancer, かに座], [Leo, しし座], [Virgo, おとめ座], [Libra, てんびん座], [Scorpius, さそり座], [Sagittarius, いて座], [Capriconus, やぎ座], [Aquarius, みずがめ座], [Pisces, うお座]]


このように改行を入れて返したり
Aries,おひつじ座
Taurus,おうし座
Gemini,ふたご座
Cancer,かに座
Leo,しし座
Virgo,おとめ座
Libra,てんびん座
Scorpius,さそり座
Sagittarius,いて座
Capriconus,やぎ座
Aquarius,みずがめ座
Pisces,うお座

したくて書いたコードです



コード.gs
var obj = [
  {"en": "Aries", "ja": "おひつじ座"},
  {"en": "Taurus", "ja": "おうし座"},
  {"en": "Gemini", "ja": "ふたご座"},
  {"en": "Cancer", "ja": "かに座"},
  {"en": "Leo", "ja": "しし座"},
  {"en": "Virgo", "ja": "おとめ座"},
  {"en": "Libra", "ja": "てんびん座"},
  {"en": "Scorpius", "ja": "さそり座"},
  {"en": "Sagittarius", "ja": "いて座"},
  {"en": "Capriconus", "ja": "やぎ座"},
  {"en": "Aquarius", "ja": "みずがめ座"},
  {"en": "Pisces", "ja": "うお座"}
]

function make_arrays(){
  var keys = Object.keys(obj[0]);
  var arrays = [];
  for(var i = 0; i < obj.length; i++){
    var array = [];
    for(var j = 0; j < keys.length; j++){
      var key = keys[j];
      array.push(obj[i][key]);
    }
    arrays.push(array);
  }
  Logger.log(arrays);
  var rows = make_rows(arrays);
  Logger.log(rows);
}

function make_rows(arrays){
  var rows = "";
  for(var i = 0; i < arrays.length; i++){
     rows += arrays[i] + "\n";
  }
  return rows;
}
意訳
JSONを用意する














この機能がやること
objのkeysを取得して(例の場合はenとjaがkey)
結果を入れる配列を用意して
objの数だけ以下を繰り返す
array配列を用意して
keysの数だけ以下を繰り返す(例の場合はenとjaなのでkeysの数は2)
keyにkeysの値を1つずつ入れて
array配列に追加する

arrays配列にarrayを追加する

arraysをログに出す
arraysをmake_rowsに渡して
結果をログに出す


この機能がやること
rowsという入れ物を用意して
arraysの数だけ繰り返す
rowsにarraysの値をひとつずつ改行を付けて足して

rowsを返す



実行結果