我有json一個主key呼叫部分和陣列中每個產品的嵌套物件。products
我的json:
{
"data": [
{
"section": 0,
"products": [
{
"product": "Name 1",
"rate": 79.96
},
{
"product": "Name 2",
"rate": 45.96
}
]
},
{
"section": 1,
"products": [
{
"product": "Name 1",
"rate": 86.06
},
{
"product": "Name 2",
"rate": 98.96
}
]
},
{
"section": 2,
"products": [
{
"product": "Name 1",
"rate": 78.95
},
{
"product": "Name 2",
"rate": 24.96
}
]
},
{
"section": 3,
"products": [
{
"product": "Name 1",
"rate": 76.11
},
{
"product": "Name 2",
"rate": 74.96
}
]
},
{
"section": 4,
"products": [
{
"product": "Name 1",
"rate": 76.07
},
{
"product": "Name 2",
"rate": 58.96
}
]
},
{
"section": 5,
"products": [
{
"product": "Name 1",
"rate": 81.15
},
{
"product": "Name 2",
"rate": 15.96
}
]
}
]
}
我如何能夠在所有產品中搜索并找到具有整體中每個產品名稱唯一性的產品的最低價格并推送到它自己的或?productssectionsdataobjectarray
結果示例:
{
"data": [
{
"product": "Name 1",
"rate": 76.07,
"section": 4
},
{
"product": "Name 2",
"rate": 15.96,
"section": 5
}
]
}
我當然會展示我到目前為止所做的事情,但我什至不確定從哪里開始以及如何開始。
先感謝您!
uj5u.com熱心網友回復:
最好的辦法是將其分解為更小的問題。您可以真正使用#each_with_object構建“產品”的平面陣列并:section為每個產品資訊哈希添加一個鍵。
json[:data].each_with_object([]) { |h, arr|
h[:products].each { |prod|
arr << { :section => h[:section], **prod }
}
}
這些可以按產品名稱分組。
json[:data].each_with_object([]) { |h, arr|
h[:products].each { |prod|
arr << { :section => h[:section], **prod }
}
}.group_by { |h|
h[:product]
}
現在我們有一個包含陣列的散列。我們真的只需要價值觀。
json[:data].each_with_object([]) { |h, arr|
h[:products].each { |prod|
arr << { :section => h[:section], **prod }
}
}.group_by { |h|
h[:product]
}.values
對于這些中的每一個,我們需要按:rate值計算的最小元素。
json[:data].each_with_object([]) { |h, arr|
h[:products].each { |prod|
arr << { :section => h[:section], **prod }
}
}.group_by { |h|
h[:product]
}.values.map { |arr|
arr.min_by { |prod| prod[:rate] }
}
結果:
[{:section=>4, :product=>"Name 1", :rate=>76.07},
{:section=>5, :product=>"Name 2", :rate=>15.96}]
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/518549.html
標籤:数组json红宝石筛选
上一篇:如何使用變數C#訪問我的嵌套資料
下一篇:來自資料框的自定義JSON格式
