Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

JavaScriptで各学生のn個のトップマークの平均を見つける


ある学生に関する情報と、このような期間に学生が採点した点数を含むオブジェクトの配列があるとします-

const marks = [
   { id: 231, score: 34 },
   { id: 233, score: 37 },
   { id: 231, score: 31 },
   { id: 233, score: 39 },
   { id: 231, score: 44 },
   { id: 233, score: 41 },
   { id: 231, score: 38 },
   { id: 231, score: 31 },
   { id: 233, score: 29 },
   { id: 231, score: 34 },
   { id: 233, score: 40 },
   { id: 231, score: 31 },
   { id: 231, score: 30 },
   { id: 233, score: 38 },
   { id: 231, score: 43 },
   { id: 233, score: 42 },
   { id: 233, score: 28 },
   { id: 231, score: 33 },
];

最初の引数として1つの配列を取り、2番目の引数として数値(たとえばnum)を受け取るJavaScript関数を作成する必要があります。

次に、関数は、スコアプロパティに従って各一意の学生の最高のレコードを選択し、各学生の平均を計算する必要があります。生徒の記録が十分でない場合は、すべての記録を考慮に入れる必要があります。

そして最後に、この関数は、学生IDをキーとして、平均スコアを値として持つオブジェクトを返す必要があります。

このためのコードは-

になります
const marks = [
   { id: 231, score: 34 },
   { id: 233, score: 37 },
   { id: 231, score: 31 },
   { id: 233, score: 39 },
   { id: 231, score: 44 },
   { id: 233, score: 41 },
   { id: 231, score: 38 },
   { id: 231, score: 31 },
   { id: 233, score: 29 },
   { id: 231, score: 34 },
   { id: 233, score: 40 },
   { id: 231, score: 31 },
   { id: 231, score: 30 },
   { id: 233, score: 38 },
   { id: 231, score: 43 },
   { id: 233, score: 42 },
   { id: 233, score: 28 },
   { id: 231, score: 33 },
];
const calculateHighestAverage = (marks = [], num = 1) => {
   const findHighestSum = (arr = [], upto = 1) => arr
      .sort((a, b) => b - a)
      .slice(0, upto)
      .reduce((acc, val) => acc + val);
      const res = {};
   for(const obj of marks){
      const { id, score } = obj;
      if(res.hasOwnProperty(id)){
         res[id].push(score);
      }else{
         res[id] = [score];
      }
   };
   for(const id in res){
      res[id] = findHighestSum(res[id], num);
   };
   return res;
};
console.log(calculateHighestAverage(marks, 5));
console.log(calculateHighestAverage(marks, 4));
console.log(calculateHighestAverage(marks));

出力

そして、コンソールの出力は-

になります
{ '231': 193, '233': 200 }
{ '231': 159, '233': 162 }
{ '231': 44, '233': 42 }

  1. JavaScriptでオブジェクトメンバーを設定する

    以下は、JavaScriptでオブジェクトメンバーを設定するためのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style>

  2. JavaScriptで各ノードの次に大きいノードを見つける

    問題 リンクリストの先頭を最初で唯一の引数として受け取るJavaScript関数を作成する必要があります。 node_i.val、jは可能な限り最小の選択肢です。そのようなjが存在しない場合、次に大きい値は0です。 この関数は、対応する要素がリスト内の要素の次に大きい要素である配列を準備して返す必要があります。 たとえば、リストが-の場合 その場合、出力は-になります。 const output = [7, 0, 5, 5, 0]; 出力の説明: 2の次に大きい要素は7であるため、7の場合、それ以上の要素はありません。 例 このためのコードは-になります class Nod