我有一系列帖子。每个帖子都有“视图”和“喜欢”,数组中的用户_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]"}
}]
有什么建议吗?
答案 0 :(得分:3)
您非常接近,您只是忘记将a
和b
相互关联:
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;