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

Ruby 向数组添加新对象时如何按position值删除同属性旧元素

原代码问题原因

Ruby的uniq方法默认保留第一个出现的重复元素,你先将新元素追加到数组末尾,去重时就会保留靠前的同position旧元素,删除靠后的新元素,因此不符合需求。


简洁实现方案

方案1(推荐,易读性最高)

先过滤掉原有数组中与新用户position一致的元素,再追加新用户即可:

# new_user为待添加的新用户对象
users = users.reject { |user| user[:position] == new_user[:position] } << new_user
# 若数组元素是对象而非哈希,将user[:position]替换为user.position即可

方案2(基于uniq实现,调整元素顺序即可)

把新元素放在数组最前面,去重时就会优先保留新元素:

users = [new_user, *users].uniq { |user| user[:position] }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:54:01