有没有办法使用Ruby删除数组中的特定重复项?数组示例:

["hello", "removeme", "removeme", "hello", "testing"]

我只想删除该数组上的"removeme"个副本.所需的输出为:

["hello", "removeme", "hello", "testing"]

有没有像这样的方法来获得想要的输出?

先谢谢你.

推荐答案

对于根据块的返回值删除重复项的块,可以使用uniq:

ary = ["hello", "removeme", "removeme", "hello", "testing"]

ary.uniq { |obj| obj.eql?('removeme') || Object.new }
#=> ["hello", "removeme", "hello", "testing"]

对于等于'removeme'的元素,我们返回true,对于其他所有元素('hello''hello''testing'),我们返回一个新对象:(请注意不同的对象ID)

"hello"    → #<Object:0x00007f9ab08590d8>
"removeme" → true
"removeme" → true
"hello"    → #<Object:0x00007f9ab0858d68> 
"testing"  → #<Object:0x00007f9ab08589f8>

具有相同返回值的所有元素都被认为是重复的,即uniq会将'removeme'视为重复的,而将其他任何元素视为唯一的,而不考虑其实际值.这允许保留两个相同的'hello'串.

Ruby相关问答推荐

ruby 3.1:使用方法(:名称)简化代码莫名其妙地失败

由模块中定义的另一个覆盖方法

在 YAML 变量中包含 jekyll / liquid 模板数据?

无法在 Heroku 教程中使用 Python 启动工头

将ruby数组转换为连续对数组

从href html标签中提取带有Ruby中nokogiri的链接(URL)?

在 RSpec-2.11 中使用隐含的 `subject` 和 `expect`

Ruby 中是否有像 C 中一样的主要方法?

在 Ubuntu 上安装 Ruby 1.9.1?

Rails - create and create!

获取Ruby中数组的差异

如何在 Ruby 中使用gets和gets.chomp

STDERR.puts 与 Ruby 中的 puts 有何不同?

如何通过匹配文本来 Select node

如何打破Ruby中的外循环?

如何转换 Ruby 哈希,使其所有键都是符号?

安装 Jekyll 时出错 - 本机扩展构建

Python 中的一切都像 Ruby 一样是对象吗?

相当于 Ruby 的 cURL?

Docker for Mac - mkmf.rb 找不到 ruby​​ 的头文件