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

时间:2014-09-19 10:20:01

标签: javascript arrays

我有一系列帖子。每个帖子都有“视图”和“喜欢”,数组中的用户_ids我希望按类似的速率对数组进行排序。

但这不起作用。

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]"}
}]

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

您非常接近,您只是忘记将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;