gpt4 book ai didi

ruby-on-rails - 如何在大型 JSON 数组中搜索并通过多个键查找记录

转载 作者:行者123 更新时间:2023-12-01 11:12:18 25 4
gpt4 key购买 nike

我有一个非常大的数据集,其组织方式如下:

users = [
{
username: "Bill",
gender: "Male",
details: {
city: "NY"
}
},
{
username: "Mary",
gender: "Female",
details: {
city: "LA"
}
}
]

我需要一种通过多个键的多个值搜索多条记录的快速方法。

我有以点分隔的键列表:

keys = ["gender", "details.city"]

我需要做这样的事情(用伪代码编写):

my_users = users.any? {|user|
keys.each do |key|
user.key == "NY"
end
}

我知道这行不通。它不起作用的原因之一是我的键列表是点分隔的,所以我可以将它拆分为一个键数组,如 ['gender'][ 'details']['city'],或使用如下方法将用户哈希转换为以点分隔的对象:

def to_o
JSON.parse to_json, object_class: OpenStruct
end

最佳答案

希望这个方法能如你所愿

def search(users, keys, value)
users.select do |user|
keys.any? do |key|
user.dig(*key.split('.').map(&:to_sym)) == value
end
end
end

search(users, keys, 'NY')
#=> [{ :username => "Bill", :gender => "Male", :details => { :city => "NY" } }]

关于ruby-on-rails - 如何在大型 JSON 数组中搜索并通过多个键查找记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58614275/

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