小编fr3*_*3d0的帖子

在Ruby on Rails中基于频率对数组进行排序

我有一个嵌套的数字数组,排列如下:

ids = [[5,8,10],[8,7,25],[15,30,32],[10,8,7]]
Run Code Online (Sandbox Code Playgroud)

我只需要一个包含所有键的单个数组,而不重复,所以我使用了这个:

ids = ids.flatten.uniq
Run Code Online (Sandbox Code Playgroud)

这产生了这个:

ids = [5,8,10,7,25,15,30,32]
Run Code Online (Sandbox Code Playgroud)

自从我使用以来.uniq,它消除了重复的值.但是,我想根据它们出现在子数组中的频率来排序,而不是按顺序排列它们的顺序 - 所以像这样:

ids = [8,10,7,5,25,15,30,32]
Run Code Online (Sandbox Code Playgroud)

ruby arrays ruby-on-rails

6
推荐指数
1
解决办法
411
查看次数

索引显示顺序

我有一个搜索表单,以随机顺序返回一个id数组,具体取决于哪个元素在搜索中有更多关键字.在索引中,它们按最小的id排序.

例如:

def search
    ids = [13,8,2,4,7]
    items.where("id in ?", ids)
  end
Run Code Online (Sandbox Code Playgroud)

在我的控制器的索引动作中我有类似的东西

@items = Items.search
Run Code Online (Sandbox Code Playgroud)

但是这些项目仍然按照[2,4,7,8,13]索引表中的顺序显示.

如何以我在搜索功能中查询的顺序显示项目?

ruby indexing ruby-on-rails scaffold ruby-on-rails-4

1
推荐指数
1
解决办法
137
查看次数