How to Implement LINQ methods in JavaScript – Part 7

featured
April 21, 2018
💫 Originally posted here. Broken? Let me know ~

Photo by rawpixel.com on Unsplash
I will cover LINQ methods for initializing a sequence.

Here are the methods covered so far.

  1. Part 1 〰️ Select, Aggregate, Where, OrderBy (Ascending, Descending)
  2. Part 2 〰️ Any, Distinct, Concat, SelectMany
  3. Part 3 〰️ Reverse, Zip, Min/Max
  4. Part 4 〰️ Union, Intersect, Except
  5. Part 5 〰️ Sum, Average, Count
  6. Part 6 〰️ First, Last, DefaultIfEmpty, Skip, Take
  7. Part 7 〰️ Empty, Repeat, Range
  8. Part 8 〰️ All, Contains, SequenceEqual

🔴 Overview

In this article, I will cover following methods.

LINQ MethodsJavaScript EquivalentsGo to example
Empty[] - An empty arrayEmpty
RepeatArray#fill
Array#map
Repeat
RangeArray#fill
Array#map
Range

I won’t be using Orders collections as I have in previous articles.

🔴 Examples

🔸 Empty

C# is a typed language while JavaScript is not. .Empty returns a typed sequence but since there is no need for a type, you can just return an empty array [] in JavaScript

Results

Nothing surprising as shown above 😀.

🔸 Repeat

For this demo, I thought it was an overkill to use Orders collection used in last 6 articles so simply repeated a sentence, “I love your smile” five times.

Results

JavaScript version uses Array#fill method to simply fill it with undefined and populate it with map.

🔸 Range

Same here with the Repeat Demo, I will use a simple case to demo how to generate a range of numbers.

Results

I used he same technique but utilizing an index property of map callback, which is where initialization of a range occurs (index starts from 0).

🔴 Closing Remark

If you have been following the series, you might have noticed that many JavaScript implementations uses map and reduce.

It’s because many LINQ methods are simply a syntactic sugar over what “map” and “reduce” can do.

Please let me know should you find any errors or improvements I can make to the codes.
The full source code and instructions on how to run them are on GitHub.