私は人々が投票することができ、投票が配列に格納される文字の配列を持っています。最高のupvoteとdownvoteの投票数の並べ替えとその逆の並べ替え
私は2つの新しい配列を作成しました。最初の配列を並べ替えて、upvoteとdownvoteの比が(upvotesからdownvotesを減算した後の)文字が配列の先頭にくるようにしてください。正反対です。
最初の配列の比較関数は、2:1のアップボトムと2:1のアップボトムの比率を持つEdwardがMagneticとGokuよりも先にある配列を返します.MagneticとGokuの両方とも1:0のアップボトムと間違っている。彼らは配列上のエドワードよりも早くなければなりません。
const characters = [
{ name: 'Sharpe', upvotes: 2, downvotes: 0 },
{ name: 'Edward', upvotes: 4, downvotes: 2 },
{ name: 'Magnetic', upvotes: 1, downvotes: 0 },
{ name: 'The', upvotes: 1, downvotes: 0 },
{ name: 'Goku', upvotes: 2, downvotes: 0 },
{ name: 'Zeros', upvotes: 1, downvotes: 1 }
];
characters.sort((a, b) => {
return (b.upvotes - b.downvotes) - (a.upvotes - a.downvotes);
});
console.log(characters);
ちょうど種類のためのあなたの比較機能は、それら上記のコメントが言うことをやっていないようです。配列1の場合、下の票を減算しない '(b.upvotes - b.downvotes) - (a.upvotes - a.downvotes)' –
あなたが上の票から票を減算するのを見ることはできません。上向きの票と下向きの票からのみ票を上げます。ソートされたロジックを確認してください。 – Dan
@Peeperがなぜ[編集して元に戻す](https://stackoverflow.com/q/47974883/1541563)... –