繁体   English   中英

如何按两个值的乘积/商对数组排序?

[英]How can I sort an array by the product/quotient of two values?

我有很多帖子。 每个帖子都有“视图”和“喜欢”,数组中有用户的_id,我想按喜欢率对数组进行排序。

但是,这不起作用。

posts.sort(function (a, b) {
   return (b.likes.length * 100) / b.views.length
});


{
 "title":"Post 1",
 "views":"[1, 2, 3, 4, 5, 6]",
 "likes":"[1, 2]"
}
{
 "title":"Post 2",
 "views":"[1, 2, 3, 4, 5, 6]",
 "likes":"[1, 2, 3, 4, 5, 6]"
}
{
 "title":"Post 3",
 "views":"[1, 2, 3, 4, 5, 6, 7, 8, 9]",
 "likes":"[1, 2, 3, 4, 5]"}
}]

有什么建议么?

您非常接近,只是忘记了将ab相互关联:

posts.sort(function (a, b) {
   var arate = (a.likes.length * 100) / a.views.length,
       brate = (b.likes.length * 100) / b.views.length;
   return arate - brate;
});

那将以升序排列。 如果要下降,则将return更改为return brate - arate;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM