Book Image

Mastering Immutable.js

By : Adam Boduch
Book Image

Mastering Immutable.js

By: Adam Boduch

Overview of this book

Immutable.js is a JavaScript library that will improve the robustness and dependability of your larger JavaScript projects. All aspects of the Immutable.js framework are covered in this book, and common JavaScript situations are examined in a hands-on way so that you gain practical experience using Immutable.js that you can apply across your own JavaScript projects. The key to building robust JavaScript applications using immutability is to control how data flows through your application, and how the side-effects of these flows are managed. Many problems that are difficult to pinpoint in large codebases stem from data that’s been mutated where it shouldn’t have been. With immutable data, you rule out an entire class of bugs. Mastering Immutable.js takes a practical, hands-on approach throughout, and shows you the ins and outs of the Immutable.js framework so that you can confidently build successful and dependable JavaScript projects.
Table of Contents (23 chapters)
Title Page
Credits
About the Author
About the Reviewer
www.PacktPub.com
Customer Feedback
Preface

Ordered sets


When you convert sets to lists, you run the risk of adding values to the list out of order. Sets have no defined order, because they're not indexed collections. Immutable.js has an OrderedSet collection type that acts like anOrderedMap. It preserves the insertion order of its values. Other than that, it is just like a regular set.

Note

Internally, Set uses Map to store its values as map keys. OrderedSet uses the OrderedMap keys.

Sorting sets

You can use ordered sets to remove duplicate values and maintain the value insertion order. This means that you can do things such as converting a list to an ordered set, sorting the set, and then converting it back to a list. Examine the following:

const myList = List.of(
  1, 3, 1, 2, 3, 4, 1, 5,
  2, 4, 6, 1, 5, 2, 7, 1,
  8, 3, 7, 1, 4, 2, 8, 9
);
const myUniqueList = myList
  .toOrderedSet()
  .sort()
  .reverse()
  .toList();

console.log('myList', myList.toJS());
// -> myList [ 1, 3, 1, 2, 3, 4, 1, 5, 2, 4, 6,
// ->          1, 5...