【发布时间】:2014-08-11 19:18:24
【问题描述】:
如果我有一个数组数组:
[[1, "foo"], [2, "bar"], [3, "foo"], [4, "foo"], [5, "bar"], [6, "baz"]]
如何消除重复值,将重复值保留在数组的末尾,结果是:
[[4, "foo"], [5, "bar"], [6, "baz"]]
谢谢!
我尝试了很多方法,例如遵循荒谬的路线,但没有成功。
a.delete_if {|q| q if q[1] in a} # syntax error
a.each {|q| q.shift if q[1] in a[q][1]} # syntax error
还有更多。 . .
【问题讨论】:
-
您需要定义“重复值”的含义。根据您的示例,如果
b遵循a和b.last==a.last,您的意思似乎是b是a的重复值。 -
仅供参考,您收到语法错误的原因是因为“in”在 Ruby 中不像那样工作。我猜你正在寻找类似于 Python 中的数组推导的东西?
-
@Ajedi32,没错,我对 Ruby 比较陌生,去年学会了 Python 编程。
-
酷。我不想在这里讨论太多细节,因为 cmets 并不是真正用于扩展讨论,但基本上 Ruby 中的块更像循环而不是数组推导式。这可能会让你感兴趣:stackoverflow.com/q/4769004/1157054 反过来:stackoverflow.com/questions/4769478/…