Ruby: 중첩 해시 반복

Ruby에서 중첩된 해시를 반복하는 방법은 무엇입니까?



중첩된 해시를 반복하기 전에 먼저 해시가 무엇인지 알아야 합니다.

해시: 해시는 중괄호로 묶인 키와 값의 모음이며 해시는 자바스크립트 객체와 동일합니다.

중첩 해시 예:

 apple = {
 "Hardware Products" => {
   :computers => "Mac",
   :laptops => ["Macbook Pro", "Macbook Air"],
   :tablets => ["Ipad Air", "Ipad Pro"],
   :phones => "Iphone"
   },
   "Software Products" => {
    :entertainment => ["Apple Music", "Apple Tv", "Apple Podcast"],
    :finance => ["Apple Wallet", "Apple Card"],
    :other => ["Apple Fitness", "Apple Maps"]
   }
   }


Apple 하드웨어 및 소프트웨어 제품의 중첩 해시

위의 코드 블록은 중첩 해시의 예입니다. 중첩 해시는 일반적으로 해시의 값 쌍입니다.

이제 해시가 무엇인지 명확해졌으므로 중첩된 해시를 어떻게 반복합니까?

산출물의 예: :finance 값["Apple Wallet", "Apple Card"]을 단말기에 출력합니다.

1 단계:
각 방법을 사용하여 상위 해시를 반복하고 키와 값(product_type, inventory)을 참조하도록 두 개의 매개변수를 설정합니다.

finance_products = apple.each do |product_type, inventory|
puts "product_type: #{product_type}"
puts "inventory: #{inventory}"
end

=> product_type => "Hardware Products"

=> inventory: => {
   computers => "Mac",
   laptops => ["Macbook Pro", "Macbook Air"],
   tablets => ["Ipad Air", "Ipad Pro"],
   phones => "Iphone"
   }

=> product_type => "Software Products"

=> inventory: => {
 :entertainment => ["Apple Music", "Apple Tv", "Apple Podcast"],
 :finance => ["Apple Wallet", "Apple Card"],
 :other => ["Apple Fitness", "Apple Maps"]
}



2 단계:
[조건문을 사용하여
( https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/conditionals)_(more 여기서 조건부)_ "소프트웨어 제품"의 값에 액세스합니다. 그런 다음 값(인벤토리)을 반복하고 2개의 매개변수를 전달하면 중첩된 해시 키와 값을 참조합니다!

finance_products = apple.each do |product_type, inventory|

if product_type == "Software Products"

inventory.each do |product, type|
puts "product: #{product}"
puts "type: #{type}"
    end
   end
  end

"terminal output"

product: entertainment
type: ["Apple Music", "Apple Tv", "Apple Podcast"]
product: finance
type: ["Apple Wallet", "Apple Card"]
product: other
type: ["Apple Fitness", "Apple Maps"]


3단계:
조건문을 사용하여 (제품)에서 :finance 키를 검색한 다음 각 메서드를 사용하여 값(유형)을 반복하고 매개변수(재무) 및 인쇄(재무)를 전달하여 결과물을 충족합니다.

finance_products = apple.each do |product_type, inventory|

if product_type == "Software Products"

inventory.each do |product, type|

if product == :finance

type.each do |finance|
puts "#{finance}"

    end
   end
  end
 end 
end

"terminal output"

Apple Wallet
Apple Card

좋은 웹페이지 즐겨찾기