拆分奇数/偶数以外的数组的方法

时间:2018-04-12 19:03:15

标签: mysql ruby-on-rails algorithm sorting

这是 我有用户帖子,我想把它们分成3个但是所有想到的东西都很奇怪/甚至像这样:

@Post1 = Post.where('post_id % 2 = 0')
@post2 = Post.where('post_id % 2 != 0')

有没有办法添加@post3并将帖子分成3个类别。这是出于研究目的而感谢..

1 个答案:

答案 0 :(得分:1)

你可以这样做:

@Post1 = Post.where('post_id % 3 = 0')
@post2 = Post.where('post_id % 3 = 1')
@post3 = Post.where('post_id % 3 = 2')

这与偶数/奇数相同。 %运算符返回除法模式,因此您可以将其扩展为您想要的任何数字。无论如何,不​​要认为这是一个很好的方法,特别是如果您的数量太高。我建议使用in_groups_ofhttps://apidock.com/rails/Array/in_groups_of)方法。

在您的情况下,您可以像这样使用in_groups_of:

@posts = Post.all.in_groups_of((Post.count.to_f/3).ceil, false)

就像这样,您可以像这样分配:

@Post1 = @posts[0]
@post2 = @posts[1]
@post3 = @posts[2]

或者,我认为会更好,只是分配你的@posts变量。然后,在您的视图中,您可以像这样迭代它:

- @posts.each do |group_of_posts|
  - group_of_posts.each do |post|
    # do whatever you want

就像那样,您的代码更清晰,更易于维护。祝你好运!