We'll contrast Ruby's Array methods with JavaScript's.
By the end of this, developers should be able to:
- Contrast enumerable methods on Ruby’s
Array
with iteration methods on JavaScript’sArray.prototype
. - Pass inline code as blocks or reference them as symbols in Ruby and contrast with passing inline code as anonymous or named functions in JavaScript.
- Fork and clone this repository.
- Make a new branch,
training
. - Install dependencies with
npm install
andbundle install
.
Both JavaScript and Ruby have types that represent lists. In both languages,
these types are called "arrays". In Ruby, Array
is a class that holds methods
for arrays, and in JavaScript, Array.prototype
is an object that holds methods
for arrays.
Let's compare the list of methods for Array in each language. Here is some documentation for reference:
Ruby and JavaScript Arrays both have a map
and a reduce
method. Let's
explore using them to see the similarities and differences.
# in irb or pry
fibs = [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
// in node
let fibs = [0, 1, 1, 2, 3, 5, 8, 13, 21, 34];
How can we use map to multiply each member of fibs
by two in both Ruby and
JavaScript?
# fibs.map { |fib| ... } for single-line, or
fibs.map do |fib|
# something here
end
fibs.map((fib) => {
// something here
});
Let's use reduce
to calculate the sum of elements in fibs
in both Ruby and
JavaScript.
In JavaScript, we use a function to control the behavior of Array methods. In Ruby, we use a block (
{ |p| ... }
for one line blocks,do ... end
for multi-line blocks).
Alternating between Ruby and JavaScript, write
scripts, in bin/fibonacci.rb
and bin/fibonacci.js
, that:
- calculates the product of elements of
fibs
(excluding zero). - calculates the sum of the odd elements of
fibs
- calculates the product of the even elements of
fibs
(excluding zero).
Let's use the scripts bin/people-array.js
and bin/people_array.rb
to explore
Array methods in both Ruby and JavaScript. The data in the objects we'll be
processing comes from the comma separated values (CSV) file data/people.csv
The Person objects we'll test against have properties/methods that align with
the headers in data/people.csv
plus the method age
Use the bin/people<-|_>array.*
scripts to
- Count all the people who are older than you (or just pick an age).
- Count all the people who are younger than you (or just pick an age).
- Count all the people whose first name and last name start with the same letter.
- Calculate the average age of all the people.
Build a table mapping Ruby Array methods to direct or modified invocations of
JavaScript Array methods. Show the invocation, on an array variable named a
,
with an example block or function. For the JavaScript equivalent of Ruby Array's
+
, use an array variable named b
.
Ruby | JavaScript |
---|---|
<method> |
every |
<method> |
filter |
<method> |
find |
map |
map |
reduce |
reduce |
<method> |
some |
+ |
<method> |
What do you notice?
The results of the Ruby Array methods -
, &
, |
, and flatten
aren't easily
reproducible in JavaScript.
We'll explore these methods using bin/sets_etc.rb
.
Remember our text analysis exercise from way-back?
Let's implement normalize_words
, unique_words
, word_count
, and
word_frequencies
in lib/string.rb
- All content is licensed under a CCBYNCSA 4.0 license.
- All software code is licensed under GNU GPLv3. For commercial use or alternative licensing, please contact [email protected].