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

2vuwiymt  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(312)

这是我有用户帖子,我想把他们分成3个,但所有想到的是奇偶像这样:

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

有没有办法补充 @post3 把帖子分成三类。这是为了研究,谢谢。。

j2cgzkjk

j2cgzkjk1#

你可以这样做:

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

这和偶数/奇数的方法是一样的。%运算符返回除法的mod,因此您可以将其扩展到所需的任何数字。无论如何,不要认为这是一个好办法,特别是如果你的套数太多。我建议用 in_groups_of (https://apidock.com/rails/array/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

这样,您的代码就保持了更干净更易于维护。祝你好运!

相关问题