【问题标题】:Edit a single key in hash编辑哈希中的单个键
【发布时间】:2022-09-28 17:37:46
【问题描述】:

我有一个红宝石哈希

 obj =
{
\"context\":{
\"conversationIDs\": [1, 2, 5], \"sessionID\":2}
}

我想用新值编辑 conversationIds 键并采用它的唯一性。我试过的

 merged = (
             {
context:        obj[:context].merge({
\"conversationIDs\":  [*obj[:context][\"conversationIDs\"], 2,
              1, 1].uniq })
             }
)
     puts merged

实际输出:

{:context=>{:conversationIDs=>[2, 1]}}

预期输出:

{:context=>{:conversationIDs=>[2, 1, 5]}, :sessionID=>2 }

5 输出缺失,如何维持?

  • obj[:context][\"conversationIDs\"] 不是 obj[:context][:conversationIDs]。你正在做[*nil, 2, 2, 1]的uniq,正确的是[2, 1]
  • 糟糕,错字,我的意思是[*nil, 2, 1, 1]

标签: ruby


【解决方案1】:

我会做:

obj = {:context=>{:conversationIDs=>[1, 2, 5], :sessionID=>2}}

obj[:context][:conversationIDs] = (obj[:context][:conversationIDs] + [2, 1, 1]).uniq
obj
#=> {:context=>{:conversationIDs=>[1, 2, 5], :sessionID=>2}}

或者:

obj = {:context=>{:conversationIDs=>[1, 2, 5], :sessionID=>2}}

obj[:context][:conversationIDs] += [1,2,5]
obj[:context][:conversationIDs].uniq!
obj
#=> {:context=>{:conversationIDs=>[1, 2, 5], :sessionID=>2}}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    • 2014-09-08
    • 2017-12-18
    • 1970-01-01
    相关资源
    最近更新 更多