##Objectives
- Use the
values
method to return the values in a hash - Use the
keys
method to return the keys in a hash - Use the
min
method to return the minimum value of hash
Let's learn some interesting methods we can call on hashes. Previously, you were asked to iterate over a hash and collect the key that pointed to the lowest value. We asked you not to use some of the higher level hash methods there. Now, we're going to learn a few tricks that can make a task like that much easier.
You can collect all of the values in a hash with the .values
method:
groceries = {fruit: "Banana", vegetable: "Broccoli", dessert: "Cookie"}
groceries.values
# => ["Banana", "Broccoli", "Cookie"]
We can see that the .values
method returns an array of the values of the keys in the hash.
This method, not surprisingly, returns an array containing all of the keys in the hash that .keys
has been called on:
groceries = {fruit: "Banana", vegetable: "Broccoli", dessert: "Cookie"}
groceries.keys
# => [:fruit, :vegetable, :dessert]
You can use the .min
method on a hash to return the key/value pair that contains that lowest value. What return type can return two different things? Arrays!:
food_items = {apples: 45, pears: 12}
food_items.min
# => [:apples, 45]
These are only a few of the many helpful methods out there. Be sure to check out the Ruby Docs on Hashes to learn more.
Let's practice before you move on to the next challenge:
You'll be coding your solution to this challenge in lib/values.rb
, lib/keys.rb
, and lib/min.rb
. We have a nested hash of grocery item.
groceries = {
dairy: ["milk", "yogurt", "cheese"],
vegetable: ["carrots", "broccoli", "cucumbers"],
meat: ["chicken", "steak", "salmon"],
grains: ["rice", "pasta"]
}
Use the .values
method to collect all of the values of the grocery type keys (:dairy
, :vegetables
, :meat
, :grains
). The method should return a one-dimensional (or "flat") array that only includes the values (groceries such as "milk" and "carrots") without their keys.
Hint: What happens when you call .values
on a nested hash? What is the return value? How can you flatten an array of arrays? Make sure to use binding.pry
to help you solve this one.
groceries.values
#=> [["milk", "yogurt", "cheese"], ["carrots", "broccoli", "cucumbers"], ["chicken", "steak", "salmon"], ["rice", "pasta"]]
Now, to get all the values in a flat array:
groceries.values.flatten
#=> ["milk", "yogurt", "cheese", "carrots", "broccoli", "cucumbers", "chicken", "steak", "salmon", "rice", "pasta"]
Check the return value of your method by running ruby bin/values
in the terminal.
Use the .keys
method to collect all of the keys of the hash. This one is simple enough.
groceries.keys
#=> [:dairy, :vegetable, :meat, :grains]
Check the return value of your method by running ruby bin/keys
in the terminal.
Use the .min
method to collect the value that comes first alphabetically ("broccoli").
###Step 1. Grab all the grocery values
Lucky for us, we already did this is Challenge 1. If we call, groceries.values.flatten
we should get back: ["milk", "yogurt", "cheese", "carrots", "broccoli", "cucumbers", "chicken", "steak", "salmon", "rice", "pasta"]
###Step 2. Get the minimum value
Simply calling .min
on what we did in Step 1 should do the trick:
groceries.values.flatten.min
#=> "broccoli"
Check the return value of your method by running ruby bin/min
in the terminal.
Note: .min
will also work for the entire hash. Play around in pry to see what is returned when you call groceries.min
.
other-hash-methods-code-along-v-000's People
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.