簡體   English   中英

如何在Ruby on Rails中使用循環將鍵和值推送到空哈希

[英]How to push key and value to an empty hash with a loop in Ruby on rails

我想將Bing搜索結果用於我的網頁。 要使用他們的json數據,我找到了以下解決方案:

new_bing_results = bing_results[0][:Web]


result = { }


result[:title] = new_bing_results[0][:Title]
result[:description] = new_bing_results[0][:Description]
result[:url] = new_bing_results[0][:Url]
result[:display_url] = new_bing_results[0][:DisplayUrl]

result[:title1] = new_bing_results [1][:Title]
result[:description1] = new_bing_results [1][:Description]
result[:url1] = new_bing_results [1][:Url]
result[:display_url1] = new_bing_results [1][:DisplayUrl]

result[:title2] = new_bing_results [2][:Title]
result[:description2] = new_bing_results [2][:Description]
result[:url2] = new_bing_results [2][:Url]
result[:display_url2] = new_bing_results [2][:DisplayUrl]

....

          result

我該如何創建一個循環,執行50次相同的操作而不必重復相同的代碼。

我嘗試了這個,但只得到錯誤:

new_bing_results = bing_results[0][:Web]
$i = 0
$num = 50
result2 = {}

while $i < $num do
    result[:title$i]  = new_bing_results[$i][:Title]

......

end

result

問題是我沒有找到將我的$ i號添加到鍵結果[:title]中的解決方案,如值new_bing_results [$ i] [:Title]

這應該可以解決問題

result = {}
50.times do |i|
  result["title#{i}".to_sym] = new_bing_results[i][:Title]
  result["description#{i}".to_sym] = new_bing_results[i][:Description]
  result["url#{i}".to_sym] = new_bing_results[i][:Url]
  result["display_url#{i}".to_sym] = new_bing_results[i][:DisplayUrl]
end

50.times將在049運行,您可以使用插值來避免重復。

您可以使用.to_sym方法。 例如:

new_bing_results =  [{Title: "Title"}]
result = {}
result["title#{i}".to_sym] = new_bing_results[i][:Title]
result
=> {:title0=>"Title"}

您可以使用字符串插值,然后使用to_sym方法。

    result = {}
    50.times do |n|
      result["title#{n}".to_sym] = new_bing_results[n][:Title]
    end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM