# How To Write Data Structures and Algorithms in JavaScript

In this article

Level up your coding skills and understanding of data structures and algorithms in JavaScript with this quick and easy guide!

There are many different implementations of data structures and algorithms across programming languages. This article focuses on helping you learn data structures and algorithms using JavaScript.

You’ll learn about the basic data types and default data structures within JavaScript that will help you build out queues, linked lists, graphs, trees, and more advanced implementations. With those data structures mastered, you’ll then go through how to build out your own algorithms in JavaScript, from simple arithmetic ones to more complex sorting and search algorithms.

## Types Of Basic Data Structures Using JavaScript

JavaScript is the programming language that built the web. Most web applications run on JavaScript or frameworks built on top of it, from the near-universal JQuery library to the React.js/Node.js combo that now powers complex tools across the web. There are at least 70 million sites that use JQuery around the world.

JavaScript is loosely typed and dynamic. There are seven so-called default primitive types of data, which we can define as different data types. These data types do not have variables associated with them—any JavaScript variable can be rapidly changed between one type or another. These form the basis of the static data structures in JavaScript.

### JavaScript Primitive Data Type 1: Booleans

A Boolean is a binary logic variable in JavaScript. It will return eitherTrueorFalse, depending on some underlying condition. Booleans are often useful for working with If states or For/While Loops: they can define a state where something continues executing or not.

### JavaScript Primitive Data Type 2: Strings

Strings in JavaScript are much the same as strings in other programming languages except with one exception: once created, strings cannot be modified. They are meant to represent textual information: “springboard” is a string.

### JavaScript Primitive Data Type 3: Null

A null variable means that we’re pointing at something that doesn’t exist or which is invalid. This is often intentionally implemented, in order, for example, to mark an invalid flow in our algorithm.

### JavaScript Primitive Data Type 4: Undefined

An undefined variable is automatically assigned to any variable we define and which has just been declared. For example, if we define “var springboard” in JavaScript without any declaration of what that variable is, it will return as an undefined data type.

### JavaScript Primitive Data Type 5: Numbers

Numbers are one of two ways JavaScript stores sequences of integers. Using 64 bits, it can present numbers up to 2 to the 53rd power, in both negative and positive fashion. There are also three non-integer values that can be represented in Numbers: positive infinity, negative infinity, and NaN, which represents “Not a Number.” There is a certain range where integers in JavaScript are not safe and will become an approximation—this can be checked using the Number.isSafeInteger() method. It is the reason why we have a second data type that deals with integers in JavaScript: BigInt.

### JavaScript Primitive Data Type 6: BigInt

The BigInt number type allows us to represent integers that go beyond the safe limit of Numbers—so beyond 2 to the power of 53. This data type allows us to work with very large numbers in JavaScript. BigInt variables behave quite a bit like Number variables, but they can’t be used to work with Number variables. A TypeError will be thrown if you try to combine BigInt and Numbers variables.

### JavaScript Primitive Data Type 7: Symbol

Symbols are used to create unique identifiers for objects but can be used as a way to enable different opaque data types or to serve as a unique identifier in general.

#### Get To Know Other Software Engineering Students

Abdelkareem ElSharief

Software Engineer at Bread

Dave McConeghy

Software Engineering Career Track Student at Springboard

Matthew Dillon

Front End Developer at LaunchBadge

## Implementing Data Structures Using JavaScript

With these primitive data types defined, we can now work on some data structure implementations specific to JavaScript. Data structures are a way of storing and organizing the data primitives we just described so that they can be efficiently accessed and used in algorithms.

### JavaScript Data Structure Type 1: Arrays

Arrays are sequences of primitive data types, similar to a list. In JavaScript, there are two common object-oriented implementations of array-like objects: stacks and queues, as well as the specially defined array object. Stacks and queues differ from the exact definition of arrays in other programming languages by how objects are added or removed.

Queues are FIFO (first in, first out) while stacks are LIFO (last in, first out). You can think of a queue as a line of people going into a store, where the first one in the line gets into the store, and a stack as a stack of files, with the last one placed on the stack being the first one out.

Both queues and stacks offer the opportunity to display every datatype stored within the array and to slice and “peek” at particular elements. This is also true of the JavaScript array type, which is a specially defined object in JavaScript.

We can work with arrays to define a list of data types, and then index and filter for the first one (by definition, arrays are zero-indexed, meaning a slice of [0] for the index will return the first item and so on).

### JavaScript Data Structure Type 2: Linked Nodes

Linked nodes include many different types of array-like objects since they store datatypes in sequences. The critical difference is that instead of pointing to indexes as we saw with our array example of when a datatype was placed in an array, linked nodes hold pointers to other objects. So, in order to follow the linked nodes, you’ll have to transverse the different list objects using each one as a reference to go to the next one. You start at the head and then go all the way to the tail instead of calling a master index.

There are multiple types, from singly-linked lists, doubly-linked lists (which links the tail to the head, allowing us to travel back and forth through the different data types) to trees and graphs. Trees connect parents to multiple child nodes as opposed to linked lists, which connects one parent with one child. Graphs allow for the connection of multiple parent nodes to multiple child nodes. Here is an implementation of a linked list.

### JavaScript Data Structure Type 3: Hash Tables

A hash table is a dictionary-like data structure, where keys are paired with values. Hash tables are great for rapid retrieval and modification of data, though the array and list-like objects above are better for storage. Still, especially with the explosive growth of data, hash tables have become nearly ubiquitous. For example, popular NoSQL databases used in the web such as MongoDB and Redis are distributed hash tables and key/value stores. This is an example of a hash table implementation in JavaScript.

## Implementing Algorithms Using JavaScript

Now that we’re finished learning the data types and data structures that JavaScript is composed of, we’ll go through different common algorithms and their unique implementations in JavaScript.

### JavaScript Algorithm 1: Doubling Algorithm (Arithmetic Algorithm)

Let’s start off with a simple arithmetic function, that shows us how to do a sequence of steps in JavaScript. We’ll take something and multiply it by two, then log it to our console. This requires us to define a simple variable and function.

Note at the end that when we try passing a string datatype to this algorithm, it results in an NaN datatype (not a number).

### JavaScript Algorithm 2: QuickSort (Sorting Algorithm)

A common problem with programming algorithms is how to sort through arrays of values so that they come in some logical order, say, from the lowest to the highest integer in an array of numbers. QuickSort is a sorting algorithm that can help with this. By employing a pivot and going through subsets of an array, we can slowly sort every element that is smaller than the pivot to its left.

Here’s an implementation of QuickSort in JavaScript.

### JavaScript Algorithm 3: Jump Search (Search Algorithm)

Now that we’ve sorted an array, another common class of programming algorithms tries to solve the problem of searching if a value exists in an array. Using jump search, we aim to chunk out subsets of the array such that it’ll be more efficient than binary search at filtering through already-sorted arrays. We look for an interval of known greater and lesser elements where our search value might be.

## How Does Springboard Help You Learn Data Structures and Algorithms Using JavaScript?

Springboard’s software engineering online bootcamps are designed to get you a job within months of completion. (If you want to learn what exactly software engineers do, see our post here.)

The Software Engineering Career Track is designed for prospective students with basic programming aptitude and knowledge of JavaScript as well as problem-solving and communication skills.

The self-paced curriculum, designed by leading instructor Colt Steele, will help you master web development, standard developer tooling from Git to Terminal to Github, the basics of SQL and data structures, and algorithms in both Python and JavaScript. You will learn:

- Intermediate JavaScript and DOM Manipulation
- How the web works, AJAX and jQuery
- Modern JavaScript and testing
- Node.js and Express.js fundamentals and how to build full-stack applications with both
- React.js and Redux
- Data Structures and Algorithms in JavaScript

**Since you’re here…**

Interested in a career in software engineering? Join our mentor-led Software Engineering Bootcamp or our foundational Software Engineering Course if you’re just starting out. We help people make the switch every day (just peep our reviews). You can do it, too!