[CodeKata]#07は、半数を超える(多数、半分を超える)数字を返します


質問する
数値配列numsをパラメータとして渡します.
数字のうち半数を超える(多数、半を超える)数字を返してください.
たとえば、
nums = [3,2,3]
return 3

nums = [2,2,1,1,1,2,2]
return 2
🎈家庭nums配列長さは必須2個以上
💡 に答える
  • 受信した配列をオブジェクトに変換する.keyは配列中の数字、valueは繰り返し回数
  • const numsObj = {
      1: 1,
      2: 2,
      3: 1,
    };
  • numsObj対象のキー値Object.keys(numsObj) [ '1', '2', '3' ]
  • 比較後戻り値
  • パスワード
    const moreThanHalf = (nums) => {
      const numsObj = {};
      for (let num of nums) {
        numsObj[num] == undefined ? numsObj[num] =  1 : numsObj[num]++;
      }
      const objKey = Object.keys(numsObj)
      let result=0;
      for (let i=0; i<objKey.length-1; i++) {
        numsObj[objKey[i]] < numsObj[objKey[i+1]] 
         result = [objKey[i+1]]
      }
      return Number(result);
    }
    
    const nums = [1,3,2,2,3,3,3];
    console.log(moreThanHalf(nums));
    🎈 What i learned
  • よく知っている文法しか使わないのが残念でした.
  • 他の人は.reduce()他の方法で解く.私が知っている関数は?方法.少なすぎるせいか😥
  • より多くの関数?方法.慣れるべきだと思います
  • JS_Reference