【GASスニペット】二次元配列の並び替えと重複なしの数字配列の生成

当サイトではアフィリエイト広告を利用して商品を紹介しています。

みなさん、こんにちは!
そーちゃん(@black777cat)です。

今回は、GASですぐ使えるスニペットを紹介します。

今回のスニペットは

  • 二次元配列をランダムに並び替えを行うスニペット
  • 重複しない数字の配列を生成するスニペット

こちらの2つです。
何に使うんや!!という感じですが、
特定のグループから2人を選んでペアにするときに、2次元配列の並び替えが必要で作成しました。

同じように困っている人がいたら参考にしていただけたら幸いです。

二次元配列をランダムに並び替えと重複なしの数字配列の生成

/**
 * 二次元配列をランダムに並び替える
 *
 * @param {arrayObj} arrayObj - 並び替える配列
 * @return {arrayObj} exportArrayObj - 並び替えた配列
 */
function arrayRundumSort(arrayObj = [ [1,111],[2,2222],[3,7349387494],[4,141144] ,[4,141144],[4,141144]]){
  let exportArrayObj = []
  let randomizingArray = randomizing(arrayObj.length)
  for(const index of randomizingArray){
    exportArrayObj.push(arrayObj[index -1 ])
  }
  return  exportArrayObj
}
/**
 * 数字を指定してそこまでのランダムに並び替えた配列を返す
 *
 * @param {number} number - 入力数値
 * @return {arrayObj} numArr - 配列
 * ここはコピペなのでロジックあまりわかってないです
 */
function randomizing(number = 5){
  let arr = [];
  let numArr = []; 
  for(let i = 0; i < number; i++){
    arr.push(i + 1);
  }
  for(let j = 0, len = arr.length; j < number; j++, len--) {
    var rndNum = Math.floor(Math.random()*len);
    numArr.push(arr[rndNum]);
    arr[rndNum] = arr[len-1];
  }
  return numArr
}

以上、スニペットの紹介でした。

Google Apps Script

Posted by sochan