[プログラマー]キャッチャー


JavaScriptの小関数の使用


Psunほど簡単には成功しない呼び出されたメソッドを関数として定義するプロシージャが必要です.

昇順ソート

sortobj.sort((a,b) => {
    return b[1] - a[1]
  })
降順配列はa,bの順序を変えることができる.

完全なソースコード

function solution(answers) {
  function supo1(idx) {
    if (idx % 5 == 0) {
      return 1
    } else if (idx % 5 == 1) {
      return 2
    } else if (idx % 5 == 2) {
      return 3
    } else if (idx % 5 == 3) {
      return 4
    } else if (idx % 5 == 4) {
      return 5
    }
  }
  function supo2(idx) {
    if (idx % 2 == 0) {
      return 2
    } else {
      if (idx % 8 == 1) {
        return 1
      } else if (idx % 8 == 3) {
        return 3
      } else if (idx % 8 == 5) {
        return 4
      } else return 5
    }
  }
  function supo3(idx) {
    if (idx % 10 == 0 || idx % 10 == 1) {
      return 3
    } else if (idx % 10 == 2 || idx % 10 == 3) {
      return 1
    } else if (idx % 10 == 4 || idx % 10 == 5) {
      return 2
    } else if (idx % 10 == 6 || idx % 10 == 7) {
      return 4
    } else return 5
  }
  var answers = answers
  var answer = [];
  var checkbox = { 1: 0,2: 0,3: 0 }
  answers.forEach((a, idx) => {
    if (a == supo1(idx)) {
      checkbox[1]++
    }
    if (a == supo2(idx)) {
      checkbox[2]++
    }
    if (a == supo3(idx)) {
      checkbox[3]++
    }
  })
  
  var sortobj = []
  for (var number in checkbox) {
    sortobj.push([number, checkbox[number]])
  }
  sortobj.sort((a,b) => {
    return b[1] - a[1]
  })
  var maxResult = sortobj[0][1]
  sortobj.forEach(arr => {
    if (arr[1] == maxResult) {
      answer.push(Number(arr[0]))
    }
  })
  answer.sort((a,b) => {return b[1]-a[1]})

  return answer;
}