在数组的日期只获取唯一值

时间:2018-03-06 14:32:44

标签: sql ruby-on-rails ruby

我认为这将是一项简单的任务...... 我需要删除我的数组的重复值,例如有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}

感谢您的回答:)。

Ž。

4 个答案:

答案 0 :(得分:1)

编辑:好的,我想我能理解为什么如果我尝试使用它会不起作用

a = [[“ first”],[“ second”],[“ first”]]。uniq 它正在工作,所以我将更改为以这种方式放置阵列。

答案 1 :(得分:0)

可能慢一些;但应该工作:

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

答案 2 :(得分:0)

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

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

如果不是,我建议@ ben的答案。

答案 3 :(得分:0)

find_by_sql [&#34; SELECT DISTINCT created_at,FROM your_table_name&#34;] 要么 MyTab.flatten! 注意 - 这将使用唯一值

编写MyTab数组