我有一個紅寶石哈希
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 輸出缺失,如何維持?
uj5u.com熱心網友回復:
我會做:
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}}
或者 – 正如engineersmnky 建議的那樣:
obj = {:context=>{:conversationIDs=>[1, 2, 5], :sessionID=>2}}
obj[:context][:conversationIDs].concat([2, 1, 1]).uniq!
obj
#=> {:context=>{:conversationIDs=>[1, 2, 5], :sessionID=>2}}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/510033.html
標籤:红宝石
下一篇:Products#show中的ArgumentError,“nil”不是ActiveModel兼容的物件。它必須實作:to_partial_path
