我无法在ruby中搜索数组中的特定对象。
我已经从获取结果JSON的地方向https://jsonplaceholder.typicode.com/todos
发出了请求。我正在尝试将其转换为对象数组,然后搜索出现的位置(我知道我可以发出带参数的请求,它将解决我的问题,但我无权访问后端)。
我试图在数组中打印包含对象中特定值的数组中的对象,并获取布尔值来说明字符串是否存在于数组中(我还试图在堆栈上找到问题的答案(这是似乎最接近我的问题Ruby find and return objects in an array based on an attribute,但对我没有太大帮助。
client = HTTPClient.new
method = 'GET'
url = URI.parse 'https://jsonplaceholder.typicode.com/todos'
res = client.request method, url
dd = JSON.parse(res.body)
puts dd.select { |word| word.completed == false }
puts dd.include?('temporibus atque distinctio omnis eius impedit tempore molestias pariatur')
实际结果:
select
返回的false
和include?
完全没有结果
预期结果:
select
应该放置到completed
等于false
的终端对象上。
和include?
应该返回true
答案 0 :(得分:2)
这是工作代码段:
require 'httpclient'
require 'json'
client = HTTPClient.new
method = 'GET'
url = URI.parse 'https://jsonplaceholder.typicode.com/todos'
res = client.request method, url
dd = JSON.parse(res.body)
# Use word['completed'] instead of word.completed here:
puts dd.select { |word| !word['completed'] }
# Use 'any?' array (Enumerable) method to check
# if any member of the array satisfies given condition:
puts dd.any? { |word| word['title'] == 'temporibus atque distinctio omnis eius impedit tempore molestias pariatur' }
#any?
的文档可以在这里找到:https://apidock.com/ruby/Enumerable/any%3F