LANG SELRCT

Apps Script Reference  (Create: Create new Spreadsheet | Create new Apps Script

Saturday, April 21, 2018

配列内で重複する値の発生数を取得してオブジェクトを配列に入れて返す


["す", "も", "も", "も", "も", "も", "も", "も", "も", "の", "う", "ち"]

という配列から


重複件数を取得して以下のようなオブジェクトを作りたい

[
  {count=1.0, text=う},
  {count=1.0, text=す},
  {count=1.0, text=ち},
  {count=1.0, text=の},
  {count=8.0, text=も}
]




コード.gs
function get_result() {
  var array = ["す", "も", "も", "も", "も", "も", "も", "も", "も", "の", "う", "ち"];
  var result = get_match_count(array);
  Logger.log(result);
}

function get_match_count(array) {
  var sorted = array.sort();
  var count = 1;
  var arrays = [];
  var target_i = 0;
  for (var i = 0; i < sorted.length; i++) {
    var obj = {}
    var value = sorted[i];
    if (value == sorted[i - 1]) {
      count++;
      arrays[target_i]["count"] = count; 
    } else {
      obj["text"] = value;
      obj["count"] = count;
      arrays.push(obj);
      target_i = i;
      count = 1;
    }
  }
  return arrays;
}
意訳
この機能がやること
配列を用意して
get_match_countに渡して
結果をログに出す


この機能がやること
渡された配列をsortで並べ替えて(昇順)
countの初期値を1にして
結果を入れる配列を用意して

配列の数だけ以下を繰り返す
オブジェクトを新しく作る
配列内の値を一つずつ取得して
もしひとつ前の値と同じなら
countに1を足して
arrays内で現在targetにしているindexのcountの値に入れる
同じじゃなければ
obj{"text": value, 
"count": count}を作って
arraysに追加して
target_iに現在のiを入れて
countを1に初期化する


出来上がったarraysを返す



実行結果




Latest post

スプレッドシートA列にある複数のテキストをスライドに追加したい(Google Apps Script)

今回Google Apps Scriptでやりたいこと GoogleスプレッドシートA列にある複数の値を取得して Googleスライドに渡して 図形オブジェクトのテキストとして追加したい ① スプレッドシートのA列に値を入れておく ② Code.gsのinsertNewShape...