在Ruby中为Hash键添加多个值及删除对应指定单值的实现方法
Ruby Hash指定键对应数组的元素删除/新增操作
可以实现,操作非常简单,以下是具体实现方法:
核心操作代码
1. 单个指定值删除(删除所有匹配的元素)
你的需求中删除:c对应数组中的87,直接调用数组的delete方法即可:
# 原始Hash h = { :a => [1, 3, 4], :b => [3, 6], :c => [4, 8, 87] } # 删除操作 h[:c].delete(87) # 操作后h的结果就是你需要的: # {:a => [1, 3, 4], :b => [3, 6], :c => [4, 8]}
2. 仅删除第一个匹配的元素
Array#delete会删除数组中所有匹配的目标值,如果你的数组存在重复元素,只想删除第一个出现的目标值,可以用如下写法:
target_val = 87 # 先找到目标值第一次出现的下标 target_index = h[:c].index(target_val) # 只有下标存在时才执行删除,避免目标值不存在时报错 h[:c].delete_at(target_index) if target_index
3. 新增指定值到对应数组
你提到的新增操作也非常简单,用数组的<<运算符或者push方法即可:
# 给:c对应的数组新增元素99 h[:c] << 99 # 等价写法:h[:c].push(99)
注意事项
操作前可以先判断指定键是否存在于Hash中,避免调用不存在的键返回nil后调用数组方法报错:
if h.key?(:c) h[:c].delete(87) end
内容的提问来源于stack exchange,提问作者Zazy
相关产品推荐
相关产品推荐

