【发布时间】:2018-06-07 16:11:12
【问题描述】:
我有一个人们可以投票的字符数组,并且投票存储在数组中。
我从中创建了两个新数组,我想对第一个数组进行排序,以便具有最佳赞成票与反对票比率的字符(在从赞成票中减去反对票后)位于数组的前面,而第二个应该是正好相反。
我对第一个数组的比较函数返回一个数组,其中 Edward 以 2:1 的赞成票与反对票的比率领先于 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);
【问题讨论】:
-
看起来你的比较函数并没有像上面的 cmets 所说的那样。对于数组 1,您不会减去反对票
(b.upvotes - b.downvotes) - (a.upvotes - a.downvotes) -
我没有看到你从赞成票中减去反对票。只有赞成票来自赞成票,反对票来自反对票。请检查您的排序逻辑。
-
@Peeper 不知道你为什么不只是edit and undelete this one....
-
@Patrick Roberts 谢谢,从现在开始我一定会这样做。抱歉,我还是新手。
-
upvotes - downvotes不是比率。
标签: javascript arrays node.js sorting ecmascript-6