/*
Given an array of objects: ID|userName|totalScore|competitionRank,
number ID
string userName
number totalScore
number competitionRank
all competitionRanks are set to NULL
give each score a ranking in descending order
*/
これはすべてのエッジケースを通過するかどうかは現在わかりません。また、これは私がこれを行うことができる最速のようだ、改善の助けが素晴らしいだろう。それは私が考えることができるテストケースに合格しました。どんな助けもありがとう。JavaScriptで目標の配列を指定したランク付けスコア
//Initialize data structure
var playerScores = [
{
"ID": 1,
"userName": "person1",
"totalScore": 230,
"competitionRank": null
},{
"ID": 2,
"userName": "person2",
"totalScore": 220,
"competitionRank": null
},{
"ID":3,
"userName": "person3",
"totalScore": 250,
"competitionRank": null
},{
"ID":4,
"userName": "person4",
"totalScore": 230,
"competitionRank": null
},{
"ID": 5,
"userName": "person5",
"totalScore": 250,
"competitionRank": null
}
];
playerScores.sort(function(a,b){
return b.totalScore - a.totalScore;
});
var numTies = 0;
playerScores[0].rank = 1;
for (i = 1; i < playerScores.length; i++){
if (playerScores[i].totalScore === playerScores[i-1].totalScore){
numTies++;
playerScores[i].rank = playerScores[i-1].rank;
}
else{
playerScores[i].rank = i+numTies;
numTies = 0;
}
}
console.log(playerScores);
だからあなたは自分のスコアに基づいてオブジェクトをソートしている:
は様々なために、私が代わりに
if/else
の三項演算子を使用しましたか?じゃあ何? – Li357申し訳ありませんが、私の説明の一部が途切れてしまったので、今編集します。 –
あなたは最初にそれらを降順にソートし、それぞれにランクプロパティを与えます - ランクはどのように計算されますか?インデックスだけ? – Li357