如何根据两个值的乘积/商对数组进行排序

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

本文关键字:数组 排序 何根 两个      更新时间:2023-09-26

我有一组帖子。每个帖子都有"视图"answers"点赞",其中包含数组中用户的_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 brate - arate;