仅获取数组日期的唯一值



我遇到了麻烦,因为我认为这是一项简单的任务...... 我需要删除数组的重复值,例如有 3 次 2018-02-20 13:48:44,我只需要其中的 1 个。

MyTab = [#<Poll id: nil, created_at: "2018-02-20 13:47:15">, #<Poll id: nil, created_at: "2018-02-20 13:48:44">, #<Poll id: nil, created_at: "2018-02-20 13:48:44">, #<Poll id: nil, created_at: "2018-02-20 13:48:44">, #<Poll id: nil, created_at: "2018-02-20 14:25:14">, #<Poll id: nil, created_at: "2018-02-20 14:25:14">, #<Poll id: nil, created_at: "2018-02-20 14:25:14">, #<Poll id: nil, created_at: "2018-02-20 14:32:38">, #<Poll id: nil, created_at: "2018-02-20 14:36:42">, #<Poll id: nil, created_at: "2018-02-20 14:36:42">, #<Poll id: nil, created_at: "2018-02-20 14:40:16">, #<Poll id: nil, created_at: "2018-02-20 15:30:15">, #<Poll id: nil, created_at: "2018-02-20 15:30:15">, #<Poll id: nil, created_at: "2018-03-06 10:24:25">, #<Poll id: nil, created_at: "2018-03-06 10:24:25">] 

我已经试过了,但它不起作用:

MyTab.uniq{|x| x.created_at}

感谢您:)的回答。

Z.

编辑:好的,我想我明白为什么如果我尝试使用它不起作用

a = [["第一"], ["第二"], ["第一"]].uniq 它正在工作,所以我将更改为以这种方式使用我的数组。

可能更慢;但应该工作:

MyTab.uniq { |x| Time.parse(x.created_at).to_i }

如果您可以直接从模型中重写查询,我建议直接在其中执行逻辑。

Poll.select(:created_at).where("#{query_conditions}").distinct

如果没有,我建议@ben的答案。

find_by_sql ["从your_table_name中选择不同的created_at"] 或 MyTab.flatten! 注意 - 这将使用唯一值编写MyTab数组

最新更新