You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ruby数组中仅移除指定元素的重复项?

在Ruby中移除数组内指定元素的重复项

Ruby标准库并没有提供像uniq('removeme')这样直接指定元素去重的方法,但我们可以通过简单的自定义逻辑实现仅移除特定元素重复项的需求。

以下是两种实用的实现方式:

方法一:遍历跟踪法

通过遍历数组,记录是否已经保留过目标元素,仅保留该元素的首次出现,其他元素正常保留:

arr = ["hello", "removeme", "removeme", "hello", "testing"]
target = "removeme"
seen_target = false

result = arr.each_with_object([]) do |item, res|
  if item == target
    res << item unless seen_target
    seen_target = true
  else
    res << item
  end
end

p result # => ["hello", "removeme", "hello", "testing"]

方法二:拆分合并法

将数组拆分为非目标元素集合和目标元素的首次出现,再按原位置合并:

arr = ["hello", "removeme", "removeme", "hello", "testing"]
target = "removeme"

non_target_elements = arr.reject { |item| item == target }
first_target = arr.find { |item| item == target }

result = if first_target
           target_index = arr.index(first_target)
           non_target_elements.insert(target_index, first_target)
         else
           non_target_elements
         end

p result # => ["hello", "removeme", "hello", "testing"]

两种方法都能保持原数组的顺序,且仅移除指定元素的重复项,其他元素的重复会被保留。

内容的提问来源于stack exchange,提问作者oj5th

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 17:52:40