gpt4 book ai didi

ruby-on-rails - 如何在嵌套数组/哈希上使用 ruby​​ uniq

转载 作者:太空宇宙 更新时间:2023-11-03 17:30:52 28 4
gpt4 key购买 nike

我正在尝试在后续 json 上调用 uniq 方法,这样它只会返回基于 employee_id 的唯一结果

# Json array
a ={
results: [
{
employee: {
name: "A",
employee_id: "A-00016",
title: 1
}
},{
employee: {
name: "A",
employee_id: "A-00016",
title: 2
}
},{
employee: {
name: "C",
employee_id: "C-00017",
title: 3
}
}
]
}



# Calling uniq on a
a.uniq { |p| p.values_at(:employee_id) }

但是,我只得到这个结果

{
results: [
{
employee: {
name: "A",
employee_id: "A-00016",
title: 1
}
}
]
}

而不是我想要的

{
results: [
{
employee: {
name: "A",
employee_id: "A-00016",
title: 1
},{
employee: {
name: "C",
employee_id: "C-00017",
title: 3
}
}
]
}

我是否使用了正确的方法来输出我想要的结果?

最佳答案

使用uniq:

input[:results].uniq { |e| e[:employee][:employee_id] }
#⇒ [
# {:employee=>{:name=>"A", :employee_id=>"A-00016", :title=>"1"}},
# {:employee=>{:name=>"C", :employee_id=>"C-00017", :title=>"3"}}]

但我认为应该有一些条件适用于从具有相同 id 的 sibling 中选择什么。下面的代码选择了一个具有最大 title 值的代码:

input[:results].group_by { |e| e[:employee][:employee_id] }
.map { |_, v| v.max_by { |e| e[:employee][:title].to_i } }
#⇒ [
# {:employee=>{:name=>"A", :employee_id=>"A-00016", :title=>"2"}},
# {:employee=>{:name=>"C", :employee_id=>"C-00017", :title=>"3"}}]

关于ruby-on-rails - 如何在嵌套数组/哈希上使用 ruby​​ uniq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38078785/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com